我正在学习ES6模块.但我对模块和库之间的区别感到困惑.
以及模块和库如何与node.js包不同.
解决方法
A
module是一个软件单元.这取决于上下文 – 指源代码的自包含部分,找到前者的文件,或指代表声明(或执行时生成)的模块对象(数据结构).
通常这些之间存在1:1:1的关系,这是一种很好的做法.您很少在同一源文件1中找到多个模块. ES6实现将通过将单个文件作为单个模块来实施,可以通过其唯一名称导入 – 就像之前使用的是 CommonJS或 AMD模块一样.
在ES6模块旁边,还有模块模式,它使用IIFE来封装代码并创建单例对象.有关详细信息,请参见 What is this JavaScript pattern called and why is it used?,here或 JS design patterns book.
由于模块化非常重要,因此在实现模块加载器方面有很多方法,每种方法都有自己的语法和细微之处,通常是更大框架的一部分.有关进一步的讨论,请参见 this article.
通常这些之间存在1:1:1的关系,这是一种很好的做法.您很少在同一源文件1中找到多个模块. ES6实现将通过将单个文件作为单个模块来实施,可以通过其唯一名称导入 – 就像之前使用的是 CommonJS或 AMD模块一样.
在ES6模块旁边,还有模块模式,它使用IIFE来封装代码并创建单例对象.有关详细信息,请参见 What is this JavaScript pattern called and why is it used?,here或 JS design patterns book.
由于模块化非常重要,因此在实现模块加载器方面有很多方法,每种方法都有自己的语法和细微之处,通常是更大框架的一部分.有关进一步的讨论,请参见 this article.
library是一组有用的东西,它们属于一起并作为一个整体分发.这可能不仅包括纯源代码或多于一种语言,但通常不是在我们谈论“javascript库”时.由一组js函数组成的库通常将它们作为模块导出.