2013-08-06 21 views
8

Kiedy należy używać paths w stosunku do packages w RequireJS? Czy istnieje najlepsza praktyka w tym zakresie, czy też są szczególne momenty, w których powinienem rozważyć użycie jednego z drugim?RequireJS: kiedy używać "ścieżek" zamiast "pakietów"

Mam następnie docs i wpadłem na to:

// main.js 
requirejs.config({ 
    enforceDefine: true, 
    urlArgs: "bust=" + (new Date()).getTime(), 
    baseUrl: "./js", 
    waitSeconds: 7, 
    paths: { 
     "jquery":  [ 
         'jquery' 
         ], 
     "underscore": [ 
         'underscore' 
         ], 
     "backbone": [ 
         'backbone' 
         ], 
     "handlebars":  [ 
         'handlebars' 
         ] 
    }, 
    shim: { 
     "underscore": { 
      deps: [], 
      exports: "_" 
     }, 
     "backbone": { 
      deps: ["jquery", "underscore"], 
      exports: "Backbone" 
     }, 
     "handlebars": { 
      deps: [], 
      exports: "Handlebars" 
     } 
    } // End shim 

}); // End config 


// List all files; use 'define()' and not 'require()' because of shim 
define([ 
    'jquery', 
    'underscore', 
    'backbone', 
    'handlebars' 
], function ($, _, Backbone, Handlebars) 
    { 
     console.log("$: " + typeof $); 
     console.log("_: " + typeof _); 
     console.log("Backbone: " + typeof Backbone); 
     console.log("Handlebars: " + typeof Handlebars); 
    } 
); // End define 

Jednak oglądałem film z Jesse Warden (http://css.dzone.com/articles/video-basics-requirejs) i zdaje się wykorzystywać ten styl przez większość swojego kodu:

// main.js 
requirejs.config({ 
    urlArgs: "bust=" + (new Date()).getTime(), 
    baseUrl: "./js", 
    waitSeconds: 7, 
    packages: [ 
       'main', 
       { 
        name: 'jquery', 
        location: 'libs/jquery', 
        main: 'jquery' 
       }, 
       { 
        name: 'underscore', 
        location: 'libs/underscore', 
        main: 'underscore' 
       }, 
       { 
        name: 'backbone', 
        location: 'libs/backbone', 
        main: 'backbone' 
       }, 
       { 
        name: 'handlebars', 
        location: 'libs/handlebars', 
        main: 'handlebars' 
       } 
    ] 
}); // End config 

Więc co jest właściwym sposobem? Czy powinienem używać paths lub packages? Istnieje również konfiguracja modules. Kiedy używam modules?

+0

Z mojego ograniczonego doświadczenia należy korzystać z pakietów z dev jquery lub nie można załadować core.js i innych zależności z baseUrl/a nie jquery /. –

Odpowiedz

8

Słowo packages odnosi się do standardowego CommonJS, ponieważ requirejs obsługuje ładowanie modułów, które są w CommonJS Pakiety strukturę katalogów i modułów same powinny być w formacie modułu że RequireJS można zrozumieć.

Konfiguracja ścieżek może dotyczyć również katalogu i plików (.js, moduły requirejs). Jest trochę mylące, ponieważ, jak stwierdzono, możesz używać pakietów do ładowania niestandardowych pakietów CommonJS.

Kiedy używać modułów?

wszystko w requirejs deklarowanych w ciągu: define('name', callback); jest modułem

Nadzieja ta odpowiedź pomaga.

Powiązane problemy