我试图了解热门r.js的好处。
似乎......
此外,(它与通用组合/缩小工具的不同之处)似乎......
require()
模块转换为AMD样式模块define(['dependency'], function(){...}
)不似乎......
foo.js
包含到包中),因为r.js找到define(["foo"], ...)
这是正确的,还是我错过了什么?
答案 0 :(得分:5)
你错了,因为r.js
会自动解决依赖关系。如果你有一个main.js
文件:
define(["foo"], function (foo) {
});
然后,如果您要求r.js
使用main.js
生成优化模块,将将模块foo
的代码包含在构建中。< / p>
一些警告:
可以告诉r.js
排除模块。因此,如果您认为应该在优化捆绑中的模块不存在,则可能是它已被排除。 (您知道如何使用r.js
,但如果您使用别人生成的捆绑包并且您想知道,那么这可能就是答案:它们明确地排除了构建中的依赖项。)
r.js
找不到嵌套依赖项。例如:
define(function () {
require(["foo"], function (foo) {
});
});
除非您在构建配置中将r.js
设置为foo
,否则 findNestedDepencencies
将无法找到true
。
r.js
只能找到以require
和define
调用期望依赖关系的位置放置为文字的字符串列表形式指定的依赖项。所以如果你这样做:
define(function () {
var deps = ["foo"];
require(deps, function (foo) {
});
});
然后r.js
将不知道foo
是依赖项,因为在require(deps, ...
中,您的依赖项显示为符号引用,而不是字符串列表。您必须在构建配置中手动指定foo
作为依赖项。没有标记可以让r.js
找到这些案例。