2012-10-31 23 views
8

Hiện tại tôi đang sử dụng require.js cho một dự án bên thú vị Tôi đang làm việc mọi thứ đang hoạt động tốt ngoại trừ một plugin cú pháp higlighting được gọi là prism.js. Tôi có thể thấy rằng plugin đang được kéo qua tab mạng trong chrome, nhưng plugin không khởi chạy.Tải các mô-đun không amd với require.js

Tôi không chắc chắn nếu đó là một vấn đề yêu cầu hoặc uf plugin là vấn đề và đã tự hỏi nếu có ai có thể giúp đỡ.

Dưới đây là một cái nhìn tại main.js tôi:

require.config({ 
    // 3rd party script alias names 
    paths: { 
    // Core Libraries 
    modernizr: "libs/modernizr", 
    jquery: "libs/jquery", 
    underscore: "libs/lodash", 
    backbone: "libs/backbone", 
    handlebars: "libs/handlebars", 

    text: "libs/text", 
    prism: "plugins/prism", 

    templates: "../templates" 
    }, 
    // Sets the configuration for your third party scripts that are not AMD compatible 
    shim: { 
    "backbone": { 
     "deps": ["underscore", "jquery", "handlebars"], 
     "exports": "Backbone" //attaches "Backbone" to the window object 
    } 
    } 
}); 

// Include Specific JavaScript 
require(['prism', 'modernizr', 'jquery', 'backbone', 'routers/router', 'views/AppVIew' ], 
    function(Prism, Modernizr, $, Backbone, Router, App) { 
    this.router = new Router(); 
    this.App = new App(); 
    } 
); 

Trả lời

10

Thay đổi phần shim để bao gồm lăng kính, và chắc chắn rằng nó xuất khẩu "Prism":

shim: { 
    "backbone": { 
     "deps": ["underscore", "jquery", "handlebars"], 
     "exports": "Backbone" //attaches "Backbone" to the window object 
    }, 
    "prism": { 
     "exports": "Prism" 
    } 
} 
+0

Sau khi nó được "shimmed", làm thế nào tôi có thể sử dụng nó? –

+2

Giống như bất kỳ mô-đun nào khác: 'require ('prism');' hoặc bao gồm nó như là một phụ thuộc trong các đối số để 'define'. –

1

Prism nên được thêm vào shim quá. Cũng như xương sống nó không phải là AMD tuân thủ và do đó phải được tuyên bố theo cùng một cách.

+0

ngay cả khi các plugin không có người phụ thuộc? – Lawrence

+0

có xấu của tôi, tôi giả định rằng bằng cách gọi nó là một "plugin" bạn có nghĩa là một plugin 'jquery' và nó depedns trên jquery. – yakxxx

3

tay lái và Prism không tương thích với bộ xử lý AMD (asyncronous Mô-đun Definition), do đó bạn cần phải shim đó cho mình như dưới đây;

requirejs.config({ 
    shim: { 
     'backbone': { 
      "deps": ["underscore", "jquery", "handlebars"], 
      "exports": "Backbone" //attaches "Backbone" to the window object 
     }, 
     'handlebars': { 
      "exports": 'Handlebars' 
     }, 
     'prism': { 
      "exports": "Prism" 
     } 
    } 
}); 

Bạn có thể xem trang web tài liệu hướng dẫn require.js shim; http://requirejs.org/docs/api.html#config-shim

Hy vọng điều này sẽ giúp

Các vấn đề liên quan