2013-08-06 3 views
8

Когда следует использовать paths по сравнению с packages в RequireJS? Есть ли лучшая практика для этого или есть конкретные моменты, когда я должен рассмотреть возможность использования одного над другим?RequireJS: когда использовать пакеты «пути» или «пакеты»

Я последовал за документы, и я пришел с этим:

// 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 

Однако, я смотрел видео с Джесси Уорден (http://css.dzone.com/articles/video-basics-requirejs), и он, кажется, использует этот стиль для большинства его кода:

// 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 

Так что это правильный способ? Должен ли я использовать paths или packages? Кроме того, существует конфигурация modules. Когда я использую modules?

+0

Из моего ограниченного опыта вы должны использовать пакеты с dev jquery или не загружать core.js и другие зависимости из baseUrl /, а не jquery /. –

ответ

8

Слово packages относится к стандарту CommonJS, поскольку requirejs поддерживает загрузку модулей, которые находятся в структуре каталогов CommonJS Packages, а сами модули должны быть в формате модуля, который может быть понят RequireJS.

Конфигурация путей может быть также для каталога и для файлов (.js, requirejs modules). Немного запутанно, потому что, как вы заявили, вы можете использовать пакеты для загрузки нестандартных пакетов CommonJS.

Когда я использую модули?

все в requirejs заявленного в: define('name', callback); представляет собой модуль

Надеется, что это ответ помогает.

Смежные вопросы