Próbuję załadować modernizr funkcję wykrywa dynamicznie requireJS.
Jako że Modernizr ma wbudowaną obsługę AMD, nie powinno to stanowić problemu.requireJS dla modernizr
Moja konfiguracja requireJS zawiera ścieżkę do katalogu źródłowego modernizr i funkcji wykrywa katalogu:
requirejs.config({
paths: {
"modernizr" : "components/modernizr/src",
"feature-detects": "components/modernizr/feature-detects"
}
});
Załóżmy jeden z moich poglądów wymagałyby svg test.
Moja definicja widoku może wyglądać this
define(["feature-detects/svg"], function() { .. });
svg.js
Niestety nie można znaleźć Modernizr.js
ponieważ wszyscy funkcja wykrywa i pliki źródłowe modernizr załadować modernizr bez określania dowolny katalog: define(['Modernizr'], ..
.
co skutkuje bardzo brzydki 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"
}
});
Czy istnieje przejrzysty sposób powiedzieć requireJS szukać w components/modernizr/src/
gdy nie mógł znaleźć plik?
Aktualizacja
I stworzył example github project która obejmuje podstawową konfigurację i uruchomiony demonstration.
ciekaw, przyczyny zastosowania AMD z modernizr? Musisz ładować plik synchronicznie, aby testy zostały wykonane przed renderowaniem reszty strony. Jeśli dobrze pamiętam, AMD został przede wszystkim wybrany do pomocy w procesie budowania - https://github.com/Modernizr/Modernizr/issues/713 –
@SimonSmith Korzystam ze skryptu requireJS 'r.js' do zbudowania mojej aplikacji w jeden plik. Byłoby wspaniale, gdybym mógł zdefiniować zależności moderatora za pomocą requireJS. – jantimon
Zakładam, że używasz czegoś podobnego do Bower do zarządzania zasobami, dlatego folder 'components' nie jest tym samym co folder projektu (innymi słowy, nie możesz użyć' baseUrl' w RequireJS, aby wskazywać na Modernizer). Niestety wydaje się, że nie ma prostego sposobu na dodanie tych zależności, a sposób, w jaki to rozwiązałeś, jest jedyną opcją. Alternatywą byłoby uruchomienie 'r.js' na Modernizerze, a następnie włączenie do aplikacji spakowanego pliku. Wciąż nie świetne. – danielepolencic