ES6与commonJS
ES6与commonJS分别是什么
- ES6主要是对于js增强的一种语法规范
- 而commonJS是一种包管理规范,是针对于js文件之间的依赖与引用,目前nodeJS就是遵循的commonJS的规范
关于ES6与commonJS的模块化的区别
-
commonJS
- 对于基本数据类型是属于复制,而对于复杂数据类型是浅拷贝,所以修改一个模块的值,另一个模块也会受到影响
- 这要一加载,整个require的代码均为被执行
- require中的模块是被缓存,只有在第一次加载的时候被执行一次
- 循环加载时,属于加载时执行,即在加载时全部的require会被执行,最终只会执行输出的部分,未输入的部分不会被执行
-
ES6
- import是只读引用,即不允许修改原模块中的值,且原始值发生变化会使加载值同样变化
- 是动态新增的,没有缓存
- 循环加载时,只要两个模块中存在引用就一定会执行
- import/export 最终会编译为require与exports
关于ES6导入导出的区别
-
默认导出/导入
//a模块 export default { name: '杨杨杨', age: 18, gender:'男' } //b模块 import obj from './a.js' console.log(obj)// {name: '杨杨杨',age: 18,gender:'男'}- 默认导出只能导出一次
-
按需导出/导入
//a模块 export let a = 1 export let b = ['张三','李四'] export fn = () => {console.log('哈哈')} //b模块 import {a as a1, b, fn} from './a.js'- 按需导出可以导出多个,并且能与默认导出联合使用
- as修改变量名
-
直接导出/导入
//a模块 fn = () => { console.log('我是一个函数,里面写了很多内容') } //b模块 import './a.js'
最后同学们前端之路漫漫,宝剑锋从磨砺出,梅花香自苦寒来...