规范
- require 是 CommonJS 作为 Node.js 的规范
- import是 ES6 的一个语法标准,如果要兼容浏览器的话必须转化成 ES5 的语法
写法
const fs = require('fs')
exports.fs = fs
module.exports = fs
import fs from 'fs'
import {default as fs} from 'fs'
import * as fs from 'fs'
。。。
export default fs
export const fs
export function readFile
export {readFile, read}
export * from 'fs'
调用时间
- require是运行时调用,所以require理论上可以运用在代码的任何地方
- import是编译时调用,所以必须放在文件开头
本质
1. require 相当于module.exports的传送门,module.exports 后面的内容是什么,require 的结果就是什么,比如对象、数字、字符串、函数等,然后再把 require 的结果赋值给某个变量。
2. 通过require引入基础数据类型时,属于复制该变量。通过require引入复杂数据类型时,属于浅拷贝该对象。
1、不管是基础数据还是引用类型数据,都只是对该变量的动态只读引用。动态指在一个模块中引用的变量的变化会影响另一个模块;只读指从某一个模块引入该变量后不允许修改,对于复杂类型则可添加属性和方法,不可直接赋值;
2、如果存在循环引用,只要模块存在就可执行