都是为了js模块化编程
遵循规范
-
require
是AMD规范引入方式 -
import
是es6的一个语法标准,需要转换成es5的语法才能兼容浏览器
调用时间
-
require
是运行时调用,所以require理论上可以运用在代码的任何地方 -
import
是编译时调用,所以必须放在文件头部
本质
-
require
是赋值过程,其实require的结果就是对象、数字、字符串、函数等,再把require的结果赋值给某个变量 -
import
是解构过程,但是目前所有的引擎都还没用实现import,所以需要babel进行转码,把import转码为require
require/exports写法
const fs = require('fs')
exports.fs = fs
module.exports = fs
import/export写法
导入
import utils from 'utils'
import {default as newName} from 'utils'
import * as newName from 'utils'
import {isPhone} from 'utils'
import {isPhone as isPhone2} from 'utils'
import utils, {isPhone} from 'utils'
导出
export default utils
export const utils
export function utils
export { isPhone, isObject }