我试图了解我使用 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 格式是否会带来任何性能或优化问题,而如果使用定义数组来代替,我可以避免这些问题?据我了解, 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"
}
}
});
最佳答案
Is it purely a preference / code readability thing?
是的,绝对是的。构建完成后,R.js 将 Commonjs 转换为普通 AMD。
唯一的性能影响是使用未构建的项目时。但对于开发来说它已经足够快了(我自己没有看到明显的区别)。
关于RequireJS - 定义与要求的性能差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21122348/