【问题标题】:Require.js + R.js Optimizer Ignoring ShimRequire.js + R.js 优化器忽略 Shim
【发布时间】:2012-07-13 11:52:04
【问题描述】:

R.js 没有加载我的 shim,因此 jQuery 在 tinyMCE 之前加载,并且 tiny 在加载之前被初始化。我怎样才能让垫片工作?:

构建-js.js:

var requirejs = require('requirejs');
var config = {
    mainConfigFile: '../js/main.js',
    include: [],
    name: 'main',
    out: '../js/build/build.js',
};

    requirejs.optimize(config, function (buildResponse) {
    var contents = fs.readFileSync(config.out, 'utf8');
});

main.js:

require.config({
    paths: {
        jQuery: 'common/libs/jquery/jquery-min',
        TinyMCE: 'common/libs/tinyMCE/tiny_mce',
    },
    shim: {
        'jQuery': {
            deps:['TinyMCE'],
            exports: '$',
        },
       'jQueryUi': {
            deps: ['jQuery']
        },
        'jQuerySelectmenu': {
            deps: ['jQuery', 'jQueryUi']
        },
        'jQueryAutosize': {
            depts: ['jQuery']
        },
        'Underscore': {
            exports: '_'
        },
        'Backbone': {
            deps: ['Underscore', 'jQuery'],
            exports: 'Backbone'
        }
    }
});

require(['common/src/app'], function (App) {
    App.initialize();
});

【问题讨论】:

  • require.config() 没有被解析为 r.js。您应该为 r.js 创建一个配置文件。看这里:stackoverflow.com/questions/11323414/…
  • 不是重点,但我刚刚发现您可以使用lodash 代替下划线,并且会丢失下划线垫片。
  • 你真的想在 jquery 之前加载 tiny 吗?
  • 旧的,也许不是问题,但是对于您的 jQueryAutosize 垫片,您有“depts”(而不是“deps”)。

标签: javascript node.js requirejs


【解决方案1】:

此问题已在 r.js 2.1.11 修复

只需放置

wrapShim: true 在构建配置中。

github issue

configuration example

【讨论】:

    【解决方案2】:

    我最近遇到了一些类似的问题,这让我有点难过。我不熟悉 TinyMCE 代码,但我看到你没有填充它。

    垫片(通常)不能依赖于 AMD 样式库。不确定 TinyMCE 是否属于 AMD 模块样式类别,但如果是的话……你有麻烦了。如果没有,您也需要对其进行填充。

    https://github.com/jrburke/requirejs/wiki/Upgrading-to-RequireJS-2.0#wiki-shim

    “shim”配置的重要警告:

    仅使用其他“shim”模块作为 shimed 脚本的依赖项,或没有依赖项的 AMD 库,并在它们也创建全局(如 jQuery 或 lodash)后调用 define()。否则,如果您使用 AMD 模块作为 shim 配置模块的依赖项,则在构建之后,该 AMD 模块可能直到构建中的 shimed 代码执行后才被评估,并且将发生错误。最终的解决方法是升级所有已填充的代码,使其具有可选的 AMD define() 调用。

    【讨论】:

      猜你喜欢
      • 2013-03-21
      • 2014-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-17
      • 2012-10-23
      • 1970-01-01
      相关资源
      最近更新 更多