JS =; import与require
Posted 杜夫
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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\');
引用知乎
引用博客园
require
- 通过require引入基础数据类型时,属于复制该变量。
- 通过require引入复杂数据类型时,数据浅拷贝该对象。
- 出现模块之间的循环引用时,会输出已经执行的模块,而未执行的模块不输出(比较复杂)
- CommonJS模块默认export的是一个对象,即使导出的是基础数据类型
import
- 不管是基础(复杂)数据类型,都只是对该变量的动态只读引用。动态在于一个模块中变量的变化会影响到另一个模块;只读在于从某个模块引入一个变量时,不允许修改该变量的值。对于复杂数据类型,可以添加属性和方法,但是不允许指向另一个内存空间。
- 出现模块之间的循环引用时,只要模块存在某个引用,代码就能够执行。
以上是关于JS =; import与require的主要内容,如果未能解决你的问题,请参考以下文章
CommonJS模块与ES6模块的区别(require和import)
js当中对代码拆分时require.ensure()和import()的使用介绍及对比