JavaScript是否有类似于Java Jar或.NET DLL的等效物?

3
作为一名初学 JavaScript 的人,我想知道所有的 JavaScript 代码都必须作为单独的 .js 文件进行“部署”,还是有没有像 Java 的 .jar 或 .NET 的 .dll 这样的方式来捆绑/打包多个 JS 文件作为一个组件。
例如,如果我有一个由 30 个 JS 文件组成的可重复使用的 JS 对象和函数库集合,是否有一种方法将它们打包为一个可部署的单一组件,或者我只能在每个要使用它们的项目中复制粘贴这 30 个文件?
这里有什么常规做法吗?先感谢您!
5个回答

4
2018年更新: 您可以使用CommonJS或ES模块,并使用适当的工具(例如Browserify、webpack、Parcel等)打包它们。

当然,JavaScript无法在发送到客户端之前进行编译。最接近的等效方法只是将它们缩小,然后将所有文件粘合在一起。对于缩小,我个人喜欢Google Closure Compiler;至于粘合,则很容易使用命令行工具完成。例如:

cat script1.js >> all.js
cat script2.js >> all.js
# etc.

1
我 nitpicking 的更多是纠正,但现代 JS 解释器实际上是 JIT(即时编译器)。这意味着在一些初始解析和预处理之后,它会即时地编译成字节码,而不是通过运行时代码直接解析、记号化和解释。Python 也做了类似的事情,但在运行程序一次后,你实际上可以将 Python 保存为二进制文件。 - Erik Reppen
1
@ErikReppen:是的,我指的是“在它被发送到浏览器之前”。抱歉,回答已更新。(是的,这真是太苛刻了 ;) - Ry-

1
如果您计划使用所有文件的内容,可以使用文本编辑器将它们的内容合并到一个单独的js文件中。由于需要进行30个请求,因此拥有30个单独的.js文件会减慢页面加载速度。您可以进一步通过使用JavaScript“缩小器”(例如http://jscompress.com/http://www.minifyjavascript.com/)来减小文件大小。

1

是的。

它被称为命名空间
是一个关于它的解释博客。
是一个不错的教程。


“Google it up”不是一个答案。请添加一个例子或描述。 - Ry-
3
我会撤销我的-1评分,但是请记住,仅仅在回答中提供链接被认为是不好的形式,而且链接可能会失效。请考虑对内容进行概述、添加示例或描述等操作。 - Ry-

0

...你最好的选择是进行缩小,将其合并为一个文件,并可能考虑使用自动构建系统。然而,当您构建单个文件时,要非常小心,因为压缩/缩小过程可能会破坏某些部分。考虑通过jsLint运行源文件。计划投入大量时间进行测试。


0

尽管Javascript是一种解释性语言,但Google声称它可以被编译。这就是他们的closure compiler所做的。它与代码最小化有些不同,因为该代码还针对更快的执行进行了优化。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接