RequireJS - 定义与要求的性能差异

标签 requirejs

我试图了解我使用 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/

相关文章:

javascript - 让 requirejs 等到文件加载后再继续

javascript - RequireJS 是否应该处理我应用程序中的所有外部 JavaScript 库?

javascript - 在优化脚本中嵌入 require.js

javascript - requirejs, "Requirejs loads each module once"是什么意思

requirejs - 如何在 Play 框架中使用 RequireJS 优化器?

requirejs - 如何使用 yeoman Gruntfile.js 将 requirejs 替换为 almondjs?

javascript - Node.js require() 与 RequireJS?

backbone.js - 将 jquery UI 与 require.js 和 CDN 结合使用

javascript - Require.js 甚至在 IF 语句中加载模块

javascript - HTML 与组件的 knockout SPA 尝试,绑定(bind)不起作用