【发布时间】:2012-08-07 23:14:04
【问题描述】:
我已经开始在一个虚拟项目中使用 require js。我现在想使用 r.js 脚本来构建我的生产项目。
上下文是这样的:
-
名为 start.js 的主文件是:
require([/* some stuff */], function (){ /* app logic */ });其中有一个 if 可以根据某些条件决定我应该要求什么。
所需文件是 ModuleA 或 ModuleB
-
ModuleA 和 ModuleB 都有依赖关系。
define([/*some deps*/], function(dep1, dep2...) { /* app logic */ return { /* interface */ } 在优化和模块连接之前,在开发模式下一切正常。
使用 r.js 构建时,我将以下内容指定为模块目标: 模块:[{名称:“开始”},{名称:“ModuleA”},{名称:“ModuleB”}]
问题是我的 ModuleA 变成了:
define(dep1 ..);
define(dep2 ..);
define(ModuleA ..);
但是没有从 ModuleA 加载。开发中ModeulA的代码加载执行,构建后的代码加载但不运行。
我该如何解决这个问题?
更新
http://pastebin.com/p1xUcY0A --> start.js
http://pastebin.com/dXa6PtpX --> ModuleA js-animation.js
http://pastebin.com/xcCvhLrT --> ModuleB css-animation.js 无部门。
http://pastebin.com/j51V5kMt --> 运行优化器时使用的 r.js 配置文件。
http://pastebin.com/UVkWjwe9 --> 运行 r.js 后 js-animation.js 的样子。这是有问题的文件。我没有从这个文件中得到 js-animation 模块。 require 不会返回我的 js-animation 对象。
编辑:
删除模块定义末尾的 .js 和 from start js 后,优化后的 start.js 为http://pastebin.com/LfaLkJaT,js-animations 模块为http://pastebin.com/qwnpkCC6。在 chrome 中,我在控制台中收到此错误 http://pastebin.com/Hq7HGcmm
【问题讨论】:
-
我可以粘贴虚拟项目的整个代码,不过它大约有 300 行。
-
将您的代码放在 pastebin.com 上并编辑您的问题并附上您的 pastebin 网址:)
-
不确定 pastebin 是否是一个不错的选择。这些项目在 dev 中有 4 个 js 文件,在生产中应该有 3 个。 :|
-
澄清:您的“启动”模块是否具有
require之外的逻辑,会生成一系列依赖项?如果是这样,这个数组将包含依赖名称“ModuleA”还是“ModuleB”?也许你可以添加start.js的代码... -
感谢@rharper 的评论。我的 start.js 模块里面有两个要求。两个内部 require 调用中只有一个是根据条件完成的。这说明我的情况了吗?
标签: javascript requirejs js-amd