javascript 发展初期,没有模块化的概念。代码都通过,函数命名冲突、依赖关系处理等问题都难以解决。
逐渐的出现了前端模块化解决方案,AMD
、CMD
、Common.js
以及ES6
的模块化规范。
规范就是规范,就像编程语言的语法
AMD规范 与CMD规范
AMD规范主要实现为 Require.js
CMD规范主要sea.js
这两个规范目前已经是明日黄花,不推荐再去学习。
Common.js
node.js 是commom.js 规范的主要实践者。common.js规范规定,每个模块可以有两个变量使用:require
和module
:
require
用来加载模块module
代表当前模块,exports
是module
上的一个属性,保存了当前模块要导出的接口或者变量
// common.js 规范
// module.js 模块导出 通过module.export
const a = 'commonjs'
module.export = { // 模块导出
a : a
}
// b.js 引入模块 通过require
const b = require('./a.js')
复制代码
ES6 module
前边提到的几种规范是社区开发者制定的,ES6 module是javascript 语言层面实现的模块化,而且实现的相当简单,完全可以替代AMD、CMD、common.js,成为通用的模块化解决方案。
Node.js 13.2版本,也已经默认支持了ES6 module规范。
// ES6 module 基本语法
// a.js 模块导出
export const a = 'es6 module'
// b.js 模块导入
import { a } from 'a.js'
复制代码
题外话: npm包的规范
npm 包管理 是有一套规范,遵循npm包规范进行定义,才能使用npm进行管理。和具体的包里面的内容使用的是Common.js还是ES6 module规范无关
规范的包结构,必须符合
- 包必须以单独的目录而存在
- ②包的顶级目录下要必须包含
package.json
这个包管理配置文件 package.json
中必须包含name,version,main
这三个属性,分别代表包的名字、版本号、包的入口。
参考
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END