CommonJS和ES6模块化的区别及使用

128 阅读1分钟

js模块的导出与导入有两种方式:一种是commonjs规范 , 一种是es6规范

使用环境

CommonJS模块的require语法是同步的,导致CommonJS模块规范只适合用在服务端。因为如果在浏览器端使用同步的方式加载一个模块,需要有网络来决定快慢,响应时间可能会很长。

ES6模块无论在浏览器端还是服务端都是可以使用的,但是在服务端,还需要遵循一些特殊的规则才能使用。

输出方式不同

  • CommonJS输出的是一个值的拷贝
  • ES6模块输出的是值的引用

运行时加载和编译时加载

  • CommonJS模块是运行时加载
  • ES6模块是编译时输出接口

common.js

导出: module.exports = { httpUrl , request }
导入:let mod =  require('路径')

es6

导出: export default { httpUrl, request }
导入: import api from '路径'  //api是自己命名的

重命名: import xxx as x from '路径' 使用时就直接用 x
按需导出:
export function a(){}
export function b(){}
按需引入: import { a , b } from '路径'

重命名: import {xxx as x , yyy as y} from '路径' 
使用时就直接用 console.log(x) 
导入所有: import * as all from '路径'  
使用console.log(all.xxx)