【发布时间】:2014-02-14 11:14:21
【问题描述】:
我一直在使用 grunt 文件将我的所有 JS 连接到一个文件中,然后发送给客户端。那我使用 require 调用有什么好处呢?依赖关系是串联顺序所固有的,我不必用额外的代码和另一个第三方库来混淆我的所有 JS。
此外,主干模型(例如)在定义中清楚地说明了它们的继承性。更不用说如果不包含它们的依赖项,它们根本就无法工作。
另外,如果与依赖关系相关的所有 cmets 都在一个位置(grunt 文件)以防止人为错误并且必须打开每个 JS 文件以了解其依赖关系,维护会不会更容易?
编辑
我的(有序)文件列表如下所示:
....
files: [
"js/somelib.js",
"js/somelib2.js",
"js/somelib3.js",
"js/models.js",
"js/views.js",
"js/controllers.js",
"js/main.js"
], ...
所以对于小型项目来说,也许 requireJS 不值得。
【问题讨论】:
-
特别是在大型应用程序中,串联所有 js 文件是不可取的;它使首次访问变慢。在使用它们的地方声明依赖关系更容易维护,并且有助于防止向客户端发送他们永远不会使用的 js——或者更糟糕的是,这些 js 已经过时并且已经死了。
-
您指的是延迟或延迟加载脚本,是的,这对更大的项目很有意义。你说更容易维护,但你没有说它是多么容易。在多个文件而不是一个文件中维护代码听起来更费力。或许在 requireJS 中有一种方法可以将 require 依赖项写入一个文件?...更方便?
-
考虑一个有 100 个 js 文件的项目,你修改一个不再依赖 foo.js 。你能从文件数组中删除 foo.js 吗?这应该强调管理使用它们的依赖项是如何更容易的,并且少数 js 文件可能会出现这个问题。另请注意,在使用它们的位置声明依赖关系并具有单文件生产构建不是相互排斥的;也没有使用 require.js 或与您已经在做的事情不兼容的类似内容。
标签: javascript web dependency-injection requirejs gruntjs