【问题标题】:Callback before RequireJS "define" function is called?调用RequireJS“定义”函数之前的回调?
【发布时间】:2014-03-18 21:01:29
【问题描述】:

我是 Backbone 的新手,我正在帮助维护一个包含大量 Backbone 和 RequireJS 代码的应用程序:

define(

    ['backbone', 'underscore'],

    function(Backbone, _) {
      // some code here
    }
);

我想在每个页面中配置下划线...从最简单的意义上说,我可以这样做:

define(

    ['backbone', 'underscore'],

    function(Backbone, _) {

      // do some stuff to configure underscore
      configureUnderscore(_);

    }
);

但我想单独保留每个页面的 define 函数,只注入一个在调用 define 回调之前调用的回调。

Backbone 或 RequireJS 如何做到这一点?

【问题讨论】:

    标签: javascript backbone.js requirejs


    【解决方案1】:

    最简单的方法可能是定义一个名为(例如)rawUnderscore 的 requireJS 模块,它无需任何配置即可返回 Undercore。

    然后,创建一个名为 underscore 的新模块,它需要 rawUnderscore 并在返回其值之前对其进行配置。

    【讨论】:

    • 嗯...这听起来很接近。在考虑了更多之后,我认为我的“配置下划线”示例有点太简单了。我希望能够在一个地方配置所有加载的模块。因此,如果我加载了 10 个模块,那么我想一次全部配置它们。我知道如果我将“configureModules”模块添加到需求列表的末尾,我可以做到这一点,但我不想这样做。我将编辑问题并将其添加为注释。
    • 就我而言,这已经足够接近了!感谢你的回答。我已经在上面的问题中添加了一些关于我实际上是如何让它工作的细节,但是因为这是让我朝着正确方向前进的原因,所以这被标记为答案......谢谢!
    • 可以在this StackOverflow answer找到一种方法,如上所述
    【解决方案2】:

    这里是如何按照another answer on this page 中的建议进行这项工作,并从this StackOverflow answer 复制到类似问题:

    main.js

    requirejs.config({
        paths: {
            'underscore': 'underscoreConfig',
            'originalUnderscore': 'underscore'
        },
        shim: {
            'originalUnderscore': {
                exports: '_'
            }
        }
    });
    

    underscoreConfig.js

    define(['originalUnderscore'], function(_) {
        _.templateSettings =
        {
            evaluate    : /<%([\s\S]+?)%>/g,
            interpolate : /<%cleanHtml([\s\S]+?)%>/g,
            escape      : /<%[=-]([\s\S]+?)%>/g
        };
        return _;
    });
    

    【讨论】:

      【解决方案3】:

      另一种方法(完全未经测试)可能是在包含 require.js 之前定义一个“require”变量,如 detailed here in the Require.JS docshere as well

      <script>
          var require = {
              deps: ["some/module1", "my/module2", "a.js", "b.js"],
              callback: function(module1, module2) {
                  //This function will be called when all the dependencies
                  //listed above in deps are loaded. Note that this
                  //function could be called before the page is loaded.
                  //This callback is optional.
              }
          };
      </script>
      <script src="scripts/require.js"></script>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-06-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-28
        • 1970-01-01
        相关资源
        最近更新 更多