如果我使用r.js优化我的RequireJS项目,我必须改变路径和依赖配置吗?

If I optimize my RequireJS project using r.js, do I have to change the path and dependency configuration?

本文关键字:路径 改变 配置 依赖 项目 js 优化 如果 RequireJS 我的      更新时间:2023-09-26

我是RequireJS的新手。我基本上能理解。然而,r.js优化过程让我感到困惑。两个问题:

  1. 难道把所有的源代码连接到一个文件中不会破坏RequireJS延迟加载能力的目的吗?

  2. 如果我使用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
}

1. 不,没有。r.js分析你的依赖树和(默认情况下)只包括模块,你需要加载应用程序启动。动态require d的依赖将不包括在内,它们将在运行时惰性加载(除非您将findNestedDependencies设置为true)。

然而,延迟加载并不是使用RequireJS的主要好处,更大的好处是模块化本身。被迫管理依赖关系使得编写不可测试或不可重构的代码变得更加困难——糟糕的架构可以立即被发现(冗长的依赖列表、"神"模块等)

再保险。2. 这正是您不应该在paths配置元素中命名自己的模块或映射它们的原因。paths应该用于第三方库而不是您自己的代码,集中名称->路径映射会降低灵活性。一旦你通过它们的路径(相对于baseUrl)引用依赖项,r.js可以在构建时重写它们:

define(["app/common/module2", "app/common/module3"], function(mod2, mod3) {
  // do something
}