import

import是es6为js模块化提出的新的语法。
import是用于将某个模块中导出的函数或对象、初始值导入到另一个模块中的语法。
它必须放在文件结尾,而且应用格局也是确定的,不容置疑。它不会将整个模块运行后赋值给某个变量,而是只抉择import的接口进行编译,这样在性能上比require好很多。require是赋值过程,import是解构过程
MDN import

import defaultExport from "module-name"; //导出默认的export defaultimport * as name from "module-name"; //导出默认的export default,并把所有的输入包裹到obj对象里import { export1 } from "module-name";//导出名为export1的模块import { export1 as alias1 } from "module-name";//导出名为export1的模块,并把export1的输入包裹到alias1对象里import { export1 , export2 } from "module-name";//导出名为export1、export2的模块import 'test.js'//运行模块的全局代码,但实际上并不导入任何值var promise = import("module-name");//动静导入模块

require

require是Commonjs的标准,node利用是由模块组成的,听从commonjs的标准。
用于引入模块、 JSON、或本地文件。
它相当于module.exports的传送门,module.exports前面的内容是什么,require的后果就是什么,对象、数字、字符串、函数……再把require的后果赋值给某个变量,相当于把require和module.exports进行平行空间的地位重叠。

// 引入本地模块:const myLocalModule = require('./path/myLocalModule');// 引入 JSON 文件:const jsonData = require('./path/filename.json');// 引入 node_modules 模块或 Node.js 内置模块:const crypto = require('crypto');

不同之处

  • CommonJS 还是 ES6 Module 输入都能够看成是一个具备多个属性或者办法的对象;
  • default 是 ES6 Module 所独有的关键字,export default fs 输入默认的接口对象,import fs from 'fs' 可间接导入这个对象;
  • ES6 Module 中导入模块的属性或者办法是强绑定的,包含根底类型;而 CommonJS 则是一般的值传递或者援用传递。