1

我是 RequireJS 的新手,所以请耐心等待。我正在开发一个 JS 应用程序,使用 AMD 样式/require.js/backbone... 有两个版本:1. 开发版本 2. 在构建过程中使用 r.js 的优化版本

问题出在两个文件中: ObjA.js

define(function() {
var ObjA = {
    a: "A"
};
return ObjA;

});

对象B.js

define(function() {
    var ObjB = {        
        "B": "B",
        "B.A": "B.A",
    };
    return ObjB;
});

问题是,在优化过程之后,我用这两个文件创建了一个新的“连接”文件,所以我完成了一个类似的文件:

优化文件.js

define(function() {
    var ObjA = {
        a: "A"
    };
    return ObjA;
});
define(function() {
    var ObjB = {        
        "B": "B",
        "B.A": "B.A",
    };
    return ObjB;
});

然后我尝试加载优化的文件,如:

if (true) {

require(["src/Objects/OptimizedFile"], function (data) {
        onload(data);
    });
}

问题是只返回第一个对象,我猜是因为第一个“返回”。有没有办法使用 require.js 和文件的优化版本来获取这两个对象?或者我正在尝试做一些不可能的事情?我这样做是因为这个优化的文件仅由请求加载,只有在条件为真时才加载,这就是我不在构建过程中包含该文件的原因。任何建议将不胜感激。

4

1 回答 1

0

您不能简单地将匿名模块文件连接在一起,因为它们没有与之关联的模块名称(因此无法被其他require()define()调用正确解析)。

您将需要进行标准 RequireJS 构建 - http://requirejs.org/docs/optimization.html(它将根据模块的文件路径插入模块名称),或者将模块名称硬编码到您的模块中。但是硬编码模块名称不被认为是最佳实践。

于 2013-04-19T13:55:16.610 回答