如果配置特定的context

var myRequire = require.config({
  context: 'foo',
  paths: {
    'jquery': 'jquery-1.11.2'
  }
});


然后,我可以立即使用myRequire加载模块:

myRequire(['require', 'jquery'], function (require, $) { /* ... */ });


但是,如果我将配置移到一个单独的文件中,如何检索适当的上下文?

基于this answer,我发现requirejs.s.contexts['foo'].require返回的功能与myRequire相同。这似乎很客气。另一个选择是为配置定义一个模块,并从中返回myRequire。批准的方法是什么?

最佳答案

这正在工作:

require.config.js:

define(function () {
    'use strict';

    var myRequire = require.config({
        context: 'foo',
        paths: {
            'jquery': 'jquery-1.11.2'
        }
    });

    return {
        myRequire: myRequire
    };
});


main.js:

// does need path and .js extension
requirejs(['/scripts/require.config.js'], function (requireConfig) {
    var myRequire = requireConfig.myRequire;

    myRequire(['require', 'jquery'], function (require, $) { /* ... */ });
});


我仍然对更好的方法持开放态度,并且尚未使用r.js对此进行测试。

09-17 11:25