JS => import与require

import

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

import defaultExport from "module-name"; //导出默认的export default
import * 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 则是普通的值传递或者引用传递。

你可能感兴趣的:(JS => import与require)