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)