RequireJS docs nói rằng để hỗ trợ các phiên bản cũ hơn của IE, bạn cần phải định cấu hình enforceDefine: true
.Shim Twitter Bootstrap cho RequireJS
Vì vậy, nếu bạn muốn hỗ trợ Internet Explorer, bắt lỗi tải và có mã mô-đun thông qua lệnh gọi define() hoặc cấu hình shim trực tiếp, luôn đặt bắt buộc phải xác định là đúng. Xem phần tiếp theo để biết ví dụ. Chú ý: Nếu bạn đặt lệnh executeceDefine: true và bạn sử dụng data-main = "" để tải mô-đun JS chính của bạn, thì mô-đun JS chính đó phải gọi define() thay vì require() để tải mã nó nhu cầu. Mô-đun JS chính vẫn có thể gọi các yêu cầu/requirejs để đặt các giá trị cấu hình, nhưng để tải các mô-đun, nó nên sử dụng hàm define().
Vì Twitter Bootstrap không phải là mô-đun AMD, tôi cần phải kích hoạt nó để hoạt động. Đây là cách tôi cấu hình nó;
<script type="text/javascript">
var require = {
paths: {
"bootstrap": "../bootstrap",
"jquery": "../jquery-1.8.2"
},
shim: {
"bootstrap": ["jquery"]
},
enforceDefine: true
};
</script>
Sau đó, khi mô-đun của tôi muốn khởi động làm phụ thuộc, tôi vẫn kết thúc với thông báo lỗi;
Error: No define call for bootstrap
http://requirejs.org/docs/errors.html#nodefine
Nếu tôi đã hiểu các tài liệu một cách chính xác, enforceDefine
nên bỏ qua miếng chêm nhưng nó không phải.
Tôi đang làm gì sai ở đây?
Đối với những người mới sử dụng JS, bạn sẽ sử dụng popover trong mã của riêng mình như thế nào? Với yêu cầu tôi có thể nói "var $ = require ('jquery') tôi sẽ viết" var popover = require ("$. Fn.popover")? – KingAndrew
No. Yêu cầu có đường dẫn mô-đun trong hệ thống tệp làm đối số. Bạn chỉ có thể yêu cầu ("bootstrap") trong trường hợp này và sau đó chỉ cần sử dụng nó $ ("# example"). Popover(). Bạn có thể yêu cầu các plugin bootstrap riêng lẻ nếu bạn đã sử dụng các phiên bản chưa được biên dịch, nhưng điều đó đòi hỏi phải thiết lập nhiều hơn. Nói chung, các plugin jQuery đính kèm vào $ .fn không tương thích với triết lý mô-đun CJS/AMD. – Karolis
Điều gì xảy ra nếu bạn cần truy cập nhiều plugin? Có cách nào để có nhiều lần xuất với requirejs không? hoặc bạn sẽ có nhiều miếng chêm cho mỗi plugin? hoặc cái gì khác? –