编程语言
首页 > 编程语言> > javascript – r.js到底做了什么?

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