Ich versuche, das Modernizr Feature dynamisch erfasst mit requireJS zu laden.
Da Modernizr AMD eingebaut hat, sollte dies kein Problem sein.requireJS Konfiguration für Modernizr
Meine requireJS Konfiguration enthält die Pfade zum Modernizr Quellverzeichnis und auf die Funktion erkennt Verzeichnis:
requirejs.config({
paths: {
"modernizr" : "components/modernizr/src",
"feature-detects": "components/modernizr/feature-detects"
}
});
einer meiner Ansichten annehmen Ermöglicht würde die svg Test benötigen.
Meine Ansicht Definition aussehen könnte this
define(["feature-detects/svg"], function() { .. });
Leider kann die svg.js
nicht Modernizr.js
finden, weil alle Features und Quelldateien Modernizr erkennen Modernizr laden, ohne jedes Verzeichnis festgelegt wird: define(['Modernizr'], ..
.
, die in einem sehr hässlich Ergebnisse require.config
requirejs.config({
paths: {
"Modernizr": "components/modernizr/src/Modernizr",
"addTest": "components/modernizr/src/addTest",
"ModernizrProto": "components/modernizr/src/ModernizrProto",
"setClasses": "components/modernizr/src/setClasses",
"hasOwnProp": "components/modernizr/src/hasOwnProp",
"tests": "components/modernizr/src/tests",
"is": "components/modernizr/src/is",
"docElement": "components/modernizr/src/docElement",
"feature-detects": "components/modernizr/feature-detects"
}
});
Gibt es einen sauberen Weg requireJS zu sagen, in components/modernizr/src/
zu suchen, wenn es die Datei nicht finden kann?
aktualisieren
Ich habe ein example github project, die die Basis-Setup und eine laufende demonstration enthält.
Neugierig nach dem Grund in Ihrem Skript verwenden definieren? Sie müssen die Datei synchron laden, damit die Tests ausgeführt werden, bevor der Rest der Seite gerendert wird. Wenn ich mich richtig erinnere, wurde AMD hauptsächlich ausgewählt, um den Build-Prozess zu unterstützen - https://github.com/Moderniszr/Moderniszr/issues/713 –
@SimonSmith Ich benutze das Skript requireJS 'r.js', um meine App zu einer zu machen Datei. Es wäre genial, wenn ich mithilfe von requireJS modernisierte Abhängigkeiten definieren könnte. – jantimon
Ich gehe davon aus, dass Sie Bower für die Verwaltung von Assets verwenden, daher ist Ihr 'components'-Ordner nicht derselbe wie der Projektordner (mit anderen Worten, Sie können' BaseUrl' in RequireJS nicht auf Modernizer verweisen). Leider scheint es keine einfache Möglichkeit zu geben, diese Abhängigkeiten und die Art, wie Sie es gelöst haben, hinzuzufügen. Die Alternative wäre, "r.js" auf Modernizer auszuführen und dann die gepackte Datei in Ihre App aufzunehmen. Immer noch nicht großartig. – danielepolencic