我是RequireJS的新手。我在很大程度上理解它。但是,r.js
优化过程让我感到困惑。两个问题:
不将所有源连接到单个文件中会破坏RequireJS的延迟加载能力的目的吗?
如果我使用r.js
进行优化并将所有内容都放在一个文件中,那么我是否必须手动更新配置中的路径信息以指向该单个文件?并且我已经定义为单个模块的依赖项现在必须在整个应用程序中更改为指向此单个文件吗?这只是一个假装来源,用于说明我目前的设置:
requirejs.config({
paths : {
mod1 : 'app/common/module1',
mod2 : 'app/common/module2',
mod3 : 'app/common/module3',
},
});
-- MOD 1
define(["mod2", "mod3"], function(mod2, mod3) {
// do something
}
现在是否必须在优化后手动更新,看起来像这样?
requirejs.config({
paths : {
optimizedMod : 'build-dir/optimizedModule',
},
});
-- MOD 1
define(["optimizedMod"], function(optimizedMod) {
// do something
}
答案 0 :(得分:0)
重新。 1.不,它没有。 r.js
分析您的依赖关系树,并且(默认情况下)仅包含您在应用程序启动时需要加载的模块。动态require
d的依赖项将不会包含在内,它们将在运行时延迟加载(除非set findNestedDependencies to true
)。
然而,延迟加载可以说是不使用RequireJS的主要好处,更重要的是模块化本身。被迫管理依赖项使得编写不可测试或可重构的代码变得更加困难 - 可以立即发现糟糕的架构(冗长的依赖列表,“上帝”模块等)。
重新。 2.这正是您shouldn't be naming your own modules或在paths
配置元素中映射它们的原因。 paths
应该用于第三方库而不是您自己的代码,集中名称 - >路径映射会降低灵活性。一旦通过路径引用依赖关系(相对于baseUrl
),r.js可以在构建时重写它们:
define(["app/common/module2", "app/common/module3"], function(mod2, mod3) {
// do something
}