Większość przykładów konfiguracji RequireJS, umieść obiekt konfiguracji w punkcie wejścia main.js, coś jak to:W jaki sposób mogę umieścić RequireJS Config w osobnym pliku i uruchomić Optymalizator r.js?
//main.js
require.config({
"paths": {
//libs
"lib1": "assets/js/lib/lib1",
"lib2": "assets/js/lib/lib2",
"lib3": "assets/js/lib/lib3",
"lib4": "assets/js/lib/lib4"
}
});
//start the app
define(["lib1"], function(lib1){/*start the app*/});
Wolę umieścić obiekt konfiguracji w oddzielnym pliku, bo jak rośnie, trudno zachować w tym samym pliku.
Poniższa konfiguracja działa, gdy uruchomię go w przeglądarce, ale z jakiegoś powodu otrzymuję komunikat o błędzie podczas uruchamiania optymalizator r.js:
//config.js
define({/*all configuration here*/});
//main.js
define(["config", "require"], function(config, require){
requirejs.config(config); //set configuration
require(["app"]); //launch app, where "app" path is defined in config.js
});
Kiedy biegnę r.js, pojawia się następujący błąd:
*Tracing dependencies for: main
Error: ENOENT, no such file or directory 'C:\Work\project\target\app.js*
Więc wydaje się, że nie dostanie r.js ustawień konfiguracyjnych, ponieważ szuka app.js jako względny scenariusza, nie jako moduł z określoną ścieżką.
Oto mój plik build.js (Appdir, reż a mainConfigFile są w stosunku do pliku build.js):
({
appDir: "../src",
baseUrl: ".",
dir: "../target",
mainConfigFile: "../src/main.js",
findNestedDependencies: true,
modules: [
{
name: "main"
}
]
})
Dzięki, wygląda dobrze. Jest w zasadzie taki sam jak robię, ale staram się zachować 1 znacznik skryptu w moim pliku index.html - mianowicie require.js. Widzę, że nie używasz danych-main, a raczej ładujesz wszystkie skrypty osobno. Czy istnieje sposób na załadowanie require-config z main.js przy użyciu require? W ten sposób nadal można zachować oddzielne dla testów – elanh
Myślę, że przy użyciu wymagać załadować require-cfg jest problem z kurczakiem i jaj. Lubię ładować require-cfg w oddzielnym kroku, ponieważ pozwala mi to na cusomize (np. I18n) na miejscu. I tak, 3 skrypty są brzydsze niż 1 skrypt, ale dla mnie jest to coś, z czym mogę żyć. –
To, co jest dziwne, działa na mnie, gdy jestem uruchomiony lokalnie w przeglądarce. Ale kiedy uruchomię r.js, nie działa. Nie mogę zrozumieć, dlaczego. Mogę nadal ładować moduły z wymaganiem, bez zdefiniowanych ścieżek, dlatego spodziewam się, że zadziała. – elanh