持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第1天,点击查看活动详情
CommonJS规范 :nodejs 默认支持的
- CommonJS规范只有两句话
-
模块必须使用 require() 导入
-
模块必须要使用
module.exports导出这两个语法都是nodejs环境自带的全局语法
-
exports与module.exports区别
- (1)如果分不清两者区别,就使用
module.exports - (2)exports不能去修改堆地址,只能往堆地址里面加数据
-
错误写法: exports = { name:'张三' }
-
这样写是修改堆地址
-
正确写法: exports.name = '张三'
-
这样写没有修改堆地址,而是往堆地址中加数据
-
- (1)如果分不清两者区别,就使用
- 1.导出模块语法一般放在js文件最底部,且只需要执行一次即可
- 2.开发中,并不需要把模块化中所有的变量全部都导出,只需要暴露别人需要用的变量即可
ES6官方模块化规范
默认导出导入
默认导出的语法: export default 默认导出的成员
默认导入的语法: import 接收名称 from 模块路径
注意:
1.每个模块中,只允许使用唯一的一次 export default
2.默认导入时的接收名称可以任意名称,只要是合法成员名称即可
按需导入
按需到考入的语法 : export const s = 10
按需导入的语法 : import{按需导入的名称} from 模块路径
注意:
1.每个模块中可以有多次按需导入
2.按需导入的成员必须和按需导出的名称保持一致
3.按需导入是,可以使用as关键字进行重命名
区别总结
Commonjs 的特性如下:
CommonJS 模块由 JS 运行时实现。
CommonJs 是单个值导出,本质上导出的就是 exports 属性。
CommonJS 是可以动态加载的,对每一个加载都存在缓存,可以有效的解决循环引用问题。
CommonJS 模块同步加载并执行模块文件.
Es6 module 的特性如下:
ES6 Module 静态的,不能放在块级作用域内,代码发生在编译时。
ES6 Module 的值是动态绑定的,可以通过导出方法修改,可以直接访问修改结果。
ES6 Module 可以导出多个属性和方法,可以单个导入导出,混合导入导出。
ES6 模块提前加载并执行模块文件,ES6 Module 导入模块在严格模式下。
ES6 Module 的特性可以很容易实现 Tree Shaking 和 Code Splitting。