2012-10-31 29 views
8

Obecnie używam require.js do fajnego projektu strony Pracuję, wszystko działa poprawnie, z wyjątkiem wtyczki kodującej składnię pluginu "prism.js". Widzę, że wtyczka jest pobierana za pośrednictwem karty sieciowej w chrome, ale wtyczka się nie uruchamia.Ładowanie modułów non amd za pomocą require.js

Nie jestem pewien, czy jest to problem wymagający, czy też problem dotyczy wtyczki i zastanawiał się, czy ktoś mógłby pomóc.

Oto spojrzenie na moje main.js:

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(); 
    } 
); 

Odpowiedz

10

Zmień sekcja podkładka obejmuje pryzmatu i upewnij się, że eksportuje "Pryzmat":

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

Jak to zrobić, gdy zostanie "wysunięte"? –

+2

Tak jak każdy inny moduł: 'require ('prism');' lub dołącz go jako zależność w argumentach do 'define'. –

1

Prism powinien być dodany do shim też. Podobnie jak szkielet, nie jest zgodny z AMD i dlatego musi być zadeklarowany w ten sam sposób.

+0

nawet jeśli wtyczka nie ma zależności? – Lawrence

+0

Tak, moje złe, założyłem, że nazywając to "wtyczką", masz na myśli wtyczkę 'jquery' i że jest ona depednsowana na jquery. – yakxxx

3

Kierownice i Prism nie są kompatybilne z AMD (Asyncronous Module Definition) więc trzeba podkładki to sam jak poniżej;

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

Możesz zajrzeć na stronę dokumentacji shin require.js; http://requirejs.org/docs/api.html#config-shim

nadzieję, że pomoże

Powiązane problemy