Javascript r.js真正做什么?
我试图了解大众化的好处 似乎Javascript r.js真正做什么?,javascript,requirejs,amd,r.js,Javascript,Requirejs,Amd,R.js,我试图了解大众化的好处 似乎 连接手动选择的JavaScript文件列表 丑化/最小化组合代码 对CSS文件执行一些类似的操作(组合它们) 此外,(它与一般的合并/缩小工具的不同之处)它似乎 将节点样式require()模块转换为AMD样式模块 命名匿名模块(例如定义(['dependency'],function(){…}) 提供一些对加载程序插件的支持,例如内联CSS文件 它确实不似乎 分析并自动解析在文件中找到的依赖项(例如,仅因为r.js找到一个define([“foo”],…
- 连接手动选择的JavaScript文件列表
- 丑化/最小化组合代码
- 对CSS文件执行一些类似的操作(组合它们)
- 将节点样式
模块转换为AMD样式模块require()
- 命名匿名模块(例如
)定义(['dependency'],function(){…}
- 提供一些对加载程序插件的支持,例如内联CSS文件
- 分析并自动解析在文件中找到的依赖项(例如,仅因为r.js找到一个
define([“foo”],…)
这是正确的,还是我遗漏了什么?您错了,因为
r.js
会自动解析依赖项。如果您有一个main.js
文件,其中包含以下内容:
define(["foo"], function (foo) {
});
然后,如果您要求r.js
从main.js
创建一个优化的模块,它将在构建中包含模块foo
的代码
一些警告:
r.js
排除模块。因此,如果您认为应该在优化包中的模块不存在,则可能是该模块已被排除。(您知道如何使用r.js
,但是如果您使用其他人生成的捆绑包,并且您想知道,那么这可能就是答案:他们明确地从构建中排除了依赖项。)r.js
不会找到嵌套依赖项,除非您告诉它。例如:
define(function () {
require(["foo"], function (foo) {
});
});
r.js
不会发现foo
是必需的,除非您在构建配置中将findnestedpences
设置为true
r.js
只能在require
和define
调用期望依赖项的位置找到以字符串列表形式指定的依赖项。因此,如果您这样做:
define(function () {
var deps = ["foo"];
require(deps, function (foo) {
});
});
然后r.js
将不知道foo
是一个依赖项,因为在中需要(deps,…
您的依赖项显示为符号引用,而不是字符串列表。您必须在生成配置中手动将foo
指定为依赖项。没有可启用的标志以使r.js
查找这些情况嗯,我的编辑不正确吗?你真的是说它应该“将文件
foo.js
包含到包中,仅仅因为r.js找到了一个define([“foo”],…)
”?如果代码已经存在(foo
已定义),我不明白你为什么要它加载foo.js
文件。:“[r.js]将相关脚本合并到构建层中并缩小它们”。依赖关系图本身在运行时仍会被解析,所有模块都被简单地放在一起,因此不需要单独获取资源。@Bergi:不知道您的编辑,但是的,我想确保r.js不会自动解析任何依赖关系是正确的。我不是说它应该这样做。它只是看起来不正确告诉我,r.js做了一些繁重的JavaScript解析/处理,并希望确保我理解该过程中的所有步骤。@user2864740:因此,对于已经是AMD风格的模块,r.js不做任何经典组合器/小型化器无法完成的特殊处理(无需批评)@UdoG我的意思是:正常的模块/文件依赖关系将被包括在内,除非排除在外,但对象图/加载顺序不会被包括在内。