Hầu hết các ví dụ về thiết lập RequireJS, đặt các đối tượng cấu hình trong điểm main.js nhập cảnh, một cái gì đó như thế này:Tôi có thể đặt cấu hình RequireJS trong tệp riêng biệt như thế nào và làm cho Trình tối ưu hóa r.js hoạt động?
//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*/});
tôi thích để đặt các đối tượng cấu hình trong một file riêng biệt, bởi vì như nó phát triển, đó là khó khăn để duy trì trong cùng một tệp.
Các thiết lập sau đây hoạt động khi tôi chạy nó trong trình duyệt, nhưng đối với một số lý do tôi nhận được một lỗi khi chạy r.js ưu:
//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
});
Khi tôi chạy r.js, tôi nhận được sau lỗi:
*Tracing dependencies for: main
Error: ENOENT, no such file or directory 'C:\Work\project\target\app.js*
vì vậy, có vẻ như r.js không nhận các thiết lập cấu hình, bởi vì nó đang tìm kiếm app.js như một kịch bản tương đối, không phải là một mô-đun với một con đường được xác định.
Đây là tập tin build.js tôi (appDir, dir và mainConfigFile có liên quan đến các tập tin build.js):
({
appDir: "../src",
baseUrl: ".",
dir: "../target",
mainConfigFile: "../src/main.js",
findNestedDependencies: true,
modules: [
{
name: "main"
}
]
})
Cảm ơn, có vẻ tốt. Về cơ bản nó giống như tôi đang làm, nhưng tôi đang cố giữ 1 thẻ script trong index.html của tôi - cụ thể là require.js. Tôi thấy bạn không sử dụng dữ liệu chính, thay vì bạn đang tải tất cả các kịch bản một cách riêng biệt. Có cách nào để tải require-config từ main.js bằng cách sử dụng yêu cầu không? Bằng cách đó bạn vẫn có thể giữ nó riêng biệt cho các bài kiểm tra – elanh
Tôi nghĩ rằng việc sử dụng yêu cầu để tải require-cfg là một vấn đề về thịt gà và trứng. Tôi thích tải yêu cầu-cfg trong một bước riêng biệt, bởi vì nó cho phép tôi để cusomize nó (ví dụ: i18n) tại chỗ. Và có, 3 tập lệnh kém hơn 1 tập lệnh, nhưng đối với tôi, đó là thứ tôi có thể sống cùng. –
Điều kỳ lạ là nó hoạt động đối với tôi khi tôi chạy cục bộ trong trình duyệt. Nhưng khi tôi chạy r.js thì không. Tôi dường như không hiểu tại sao. Tôi vẫn có thể tải các mô-đun với yêu cầu, không có đường dẫn được xác định, đây là lý do tại sao tôi mong đợi nó hoạt động. – elanh