4

我有使用具有“类”概念的语言进行编码的背景。现在我正在编写 JavaScript 代码,我想以类似的方式编写代码,以便我创建的每个面向对象的“类”都是它自己的单独文件。

在其他语言中,我会在类文件的顶部创建导入语句,以确保在类文件中使用其他自定义类,以便将其他自定义类编译到最终的二进制文件中。

当然 JavaScript 不是编译语言;但是,我仍然希望能够在自定义类文件的顶部包含某种“导入”语句,这样我就可以确保导入的 JS“类”文件可供用户浏览器下载。

如果有一个 3rd 方工具将我所有单独的类文件合并到一个 JS 文件中,那将是理想的,这样浏览器只需对单个 JS 文件发出一个 HTTP 请求,而不是对每个单独的 JS“类”进行多次调用。有谁知道是否存在这样的工具,它可以执行以下操作:

  1. 允许我选择要包含在单个 JS 文件中的 JS 文件
  2. 浏览了我在步骤 1 中选择的文件,并在每个自定义“类”文件的顶部找到了所有“导入”语句。这些“导入”语句可以只是代码中特殊格式的注释,第三方将其识别为导入语句。
  3. 然后,第 3 方将使用从步骤 1 中选择的所有文件以及在步骤 2 中找到的所有导入文件创建单个 JS 文件。

一些流行的 JavaScript 框架似乎就是这样做的。例如,jQueryUI 允许您通过允许用户检查您想要使用的对象来自定义单个 jQueryUI 源文件的下载。如果您取消选中已选中的项目所需的元素,则表单会告诉您存在需要纠正的依赖关系,然后才能继续下载文件。

那么是否有第三方工具允许开发人员使用某种“导入”语句注释来确保将许多依赖的 JS 文件(并且仅是开发人员需要的那些)合并到一个 JS 文件中?

4

5 回答 5

5

RequireJS正是为此目的而构建的。

于 2013-01-28T19:59:34.203 回答
2

看看Require.js。它允许您以模块化方式导入各种 javascript 文件并在它们之间添加所需的依赖项。最后,您还可以使用 r.js 将它们全部缩小到一个 JS 文件中

于 2013-01-28T20:00:44.453 回答
1

一个简单的批处理文件可以为您执行此操作:

@for %i in (classes/*.js) type %i >> build.js

如果您的 JS 源文件都在一个文件夹中,则此方法效果最佳,并且此示例假定该文件夹名为classes. 如果您有子文件夹,它会变得有点复杂,但可以应用类似的原则。

于 2013-01-28T20:02:03.720 回答
0

看看GruntJS,JQuery 用它来构建。如果你不关心 HTTP 请求,你可以使用前面提到的 RequireJS,它也有很好的异步加载文件的方法,在某些情况下可以提高性能。

于 2013-01-28T20:04:41.590 回答
0

查看这个类https://www.youtube.com/watch?v=KnQfGXrRoPM 这允许在类中动态导入。它还允许导入文件夹及其所有子文件夹中的所有类。它非常简单,因为它只是添加到 String 的原型函数。只需添加导入器类,您将调用“com.project.Classfile.js”.import(); 或 "com.project.*".import() 获取所有子类。分叉 - https://github.com/jleelove/Utils

于 2014-12-26T05:50:41.780 回答