javascript – r.js到底做了什么?
作者:互联网
我试图了解流行的r.js的好处.
好像……
>连接手动选择的JavaScript文件列表
> uglify /最小化组合代码
>为CSS文件做一些类似的事情(合并它们)
此外,(它与通用联合/缩小工具的不同之处)似乎……
>将节点样式的require()模块转换为AMD样式模块
>命名匿名模块(例如,define([‘dependency’],function(){…})
>为装载机插件提供一些支持,例如:内联CSS文件
它好像不……
>分析并自动解决文件中的依赖关系(例如,将文件foo.js包含到包中只是因为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) {
});
});
除非在构建配置中将findNestedDepencencies设置为true,否则r.js不会发现foo是必需的.
> r.js只能在require和define调用期望依赖项的位置找到以字符串列表形式指定的依赖项,这些字符串作为文字放置.所以,如果你这样做:
define(function () {
var deps = ["foo"];
require(deps, function (foo) {
});
});
然后r.js不会知道foo是一个依赖项,因为在require(deps,…你的依赖项显示为符号引用,而不是字符串列表.你必须手动指定foo作为依赖项构建配置.没有标志可以让r.js找到这些案例.
标签:javascript,requirejs,amd,r-js 来源: https://codeday.me/bug/20190830/1768118.html