JavaScript中的模块和库之间的区别

Nar*_*sty 9 javascript node.js

我正在学习ES6模块.但我对模块和库之间的区别感到困惑.

以及模块和库与node.js包的不同之处.

Ber*_*rgi 10

模块是一个软件单元.这取决于上下文 - 指代源代码的自包含部分,发现前者的文件,或者所述代码声明(或执行时生成)的模块对象(数据结构).
通常这些之间存在1:1:1的关系,这是一种很好的做法.您很少在同一源文件中找到多个模块1.ES6实现将通过将单个文件作为单个模块来实施,可以通过其唯一名称导入 - 就像之前使用CommonJSAMD模块一样.
在ES6模块旁边,还有模块模式,它使用IIFE来封装代码并创建单例对象.请参阅这个调用的JavaScript模式是什么?为什么要使用它?,这里还是JS设计模式的详细信息.
由于模块化非常重要,因此实现模块加载器的方法很多,每种方法都有自己的语法和细微之处,通常是更大框架的一部分.有关进一步的讨论,请参阅此文

一个是属于一个整体和分布整体有用的东西集合.这可能不仅包括纯源代码或多于一种语言,但通常不是在我们谈论"javascript库"时.由一组js函数组成的库通常将它们作为模块导出.

1:除非他们被缩小为单个脚本.此外,HTML5可能会引入声明内联ES6模块的方法.