我试图了解我使用requirejs的方式是否有任何潜在的缺点。我喜欢使用commonjs语法,典型的模块看起来像:
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格式是否会产生任何性能或优化问题,如果使用define数组,我会避免这种问题?据我了解,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"
}
}
});
答案 0 :(得分:2)
它纯粹是偏好/代码可读性吗?
绝对是的。一旦你建立,R.js将Commonjs转换为普通的AMD。
唯一的性能影响是使用未安装项目时。但是对于开发来说它足够快(我认为自己没有明显的区别)。