2014-01-14 56 views
2

我想了解是否有任何潛在的缺點,我使用requirejs的方式。我使用CommonJS的語法的風扇,一個典型的模塊將是這樣的:RequireJS - 與定義vs要求的性能差異

define(function(require) { 
    "use strict"; 

    var Backbone = require('backbone'); 
    var Templates = require('templates'); 
    var User = require('accounts/models').User; 
... 

我然後編譯我的應用程序到一個單一的JS文件。我構建的配置看起來像這樣:

name: 'main', 
mainConfigFile: '<%= build_dir %>/<%= main_app %>', 
out: '<%= build_dir %>/app.min.js', 
optimize: 'none', 
include: ['main'], 
insertRequire: ['main'], 
almond:true, 
cjsTranslate: true, 
findNestedDependencies: true, 
preserveLicenseComments: false 

我的問題是,是否使用這種格式CommonJS的姿勢,我會避開如果使用的是定義數組,而不是任何性能或優化的問題是什麼?據我瞭解,cjsTranslate參數無論如何都將其轉換爲定義調用,但我不確定是否有某些我丟失的東西?它純粹是一個偏好/代碼可讀性的東西?

僅供參考,我的配置文件(main.js):

require.config({ 
    paths: { 
     // Libraries 
     jquery: '../../vendor/jquery/jquery', 
     underscore: '../../vendor/underscore/underscore', 
     backbone: '../../vendor/backbone/backbone', 
     handlebars: '../../vendor/handlebars.js/dist/handlebars', 
     modernizr: '../../vendor/modernizr/modernizr', 

     templates: '../templates' 
    }, 

    shim: { 
     "underscore":{ 
      exports: "_" 
     }, 
     "backbone": { 
      deps: ["underscore", "jquery", "modernizr", "moment"], 
      exports: "Backbone" 
     }, 
     "handlebars": { 
      exports: "Handlebars" 
     } 
    } 
}); 

回答

2

它是一個純粹的偏好/代碼的可讀性的事情嗎?

是的。一旦你建立,R.js將Commonjs轉換爲純AMD。

唯一的性能影響是使用未建設的項目。但是對於開發來說它足夠快(我自己看不出有明顯的差別)。