Tôi đang làm việc với requirejs + jquery và tôi đã tự hỏi liệu có một cách thông minh để làm cho một plugin jQuery hoạt động tốt với yêu cầu không.Làm thế nào để tạo một plugin jQuery có thể tải với requirejs
Ví dụ: tôi đang sử dụng jQuery-cookie. Nếu tôi hiểu một cách chính xác tôi có thể tạo ra một tập tin gọi là jquery-cookie.js và bên trong làm
define(["jquery"], // Require jquery
function($){
// Put here the plugin code.
// No need to return anything as we are augmenting the jQuery object
});
requirejs.config({
"shim": {
"jquery-cookie" : ["jquery"]
}
});
tôi tự hỏi nếu tôi có thể làm những việc như jQuery làm, đó là như thế này:
if (typeof define === "function" && define.amd && define.amd.jQuery) {
define("jquery", [], function() { return jQuery; });
}
hoặc nếu đây là cách duy nhất để làm cho jQuery plugin tương thích với requirejs hoặc bất kỳ amd
Nếu tôi không làm cả hai xác định và điều shim không làm việc, Tôi nhận được $ .cookie không phải là thông báo lỗi chức năng –
Với kinh nghiệm của tôi, không trả lại bất cứ điều gì từ chức năng xác định là không đủ, requirejs sẽ không nhận ra rằng mô-đun đã tải. Điều này có thể được thu hút bởi shim: { plugins: { phụ thuộc: ['jquery'], xuất khẩu: 'plugins' } – honzajde
Bạn nên lưu ý rằng tập lệnh plugin jQuery cần thực sự chạy. Tôi không có chuyên gia nhưng tôi đã tìm thấy một giải pháp đơn giản theo đó bạn có một yêu cầu duy nhất ([ 'plugin1', 'plugi n2 ']); 'v.v. Không có cuộc gọi lại nào được truyền vào vì vậy không có gì sẽ chạy ngoại trừ các tập lệnh plugin. Điều này có nghĩa là sau đó họ sẽ tự thêm mình vào 'jQuery.fn' để ở mọi nơi khác bạn chỉ có thể liệt kê 'jquery' như là một phụ thuộc và chúng sẽ được bao gồm. Như tôi đã nói, tôi khá mới với điều này và có thể có một cách tiếp cận tốt hơn (chẳng hạn như chỉ sử dụng một thẻ 'script') nhưng điều này không hoạt động. –