前端模块化规范

javascript 发展初期,没有模块化的概念。代码都通过,函数命名冲突依赖关系处理等问题都难以解决。

逐渐的出现了前端模块化解决方案,AMDCMDCommon.js以及ES6的模块化规范。

规范就是规范,就像编程语言的语法

AMD规范 与CMD规范

AMD规范主要实现为 Require.js

CMD规范主要sea.js

这两个规范目前已经是明日黄花,不推荐再去学习。

Common.js

node.jscommom.js 规范的主要实践者。common.js规范规定,每个模块可以有两个变量使用:requiremodule

  • require 用来加载模块
  • module 代表当前模块,exportsmodule 上的一个属性,保存了当前模块要导出的接口或者变量
// 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 这三个属性,分别代表包的名字、版本号、包的入口。

参考

前端模块化:CommonJS,AMD,CMD,ES6

[前端科普系列-CommonJS:不是前端]

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享