requirejs模块别名/重映射

时间:2013-09-19 10:46:53

标签: javascript requirejs

我目前正在将外国代码集成到我们的应用程序中。 在这个过程的一部分,我必须用我们的一个替换他们的requirejs模块。

显然我无法修改他们的代码,否则我必须在每次更新时进行更改。我能做的是修改main.js(requirejs的data-main)。

这是粗略的,他们有什么:

requirejs.config({
    packages: [
        'beerpong'
    ]
});

所以他们有这个beerpong包,里面有一些模块。在这些模块中,有beer.js个文件。可能需要使用require('beerpong/beer')

除此之外,我将文件放在一个单独的文件夹中,说vodkapong/beersubstitute。我想要的是,每当require('beerpong/beer')的某个人需要js实际上为他提供vodkapong/beersubstitute时。

tl;博士:如何重新映射现有模块以改为使用我的模块?

PS:可悲的是,我们实际上并没有写一个啤酒游戏...有一天也许!

2 个答案:

答案 0 :(得分:29)

您可以使用map option。它可以为特定模块或具有"*"名称的所有模块重新映射AMD模块。一个例子是:

require.config({
    map: {
        "*": {
            "beerpong/beer": "vodkapong/beersubstitute"
        }
    },
    ...
});

答案 1 :(得分:1)

你可以这样做 -

require.config({
    paths: {
        jquery_ui_scrollbar: 'libs/jquery/jquery.custom-scrollbar'
    }
});
require(['dependency1', 'dependency2'], function (dep1, dep2) {
   // code goes here
});

在您的定义调用中,您可以执行此操作 -

define(['jquery_ui_scrollbar'], function(scrollbar) {});