博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js中import和require的区别
阅读量:5217 次
发布时间:2019-06-14

本文共 1166 字,大约阅读时间需要 3 分钟。

js中import和require的区别

ES6标准发布后,module成为标准,标准使用是以export指令导出接口,以import引入模块。但是在我们一贯的node模块中,我们依然采用的是CommonJS规范,使用require引入模块,使用module.exports导出接口。

require

它相当于module.exports的传送门,module.exports后面的内容是什么,require的结果就是什么,对象、数字、字符串、函数……再把require的结果赋值给某个变量,相当于把require和module.exports进行平行空间的位置重叠。

require理论上可以运用在代码的任何地方,甚至不需要赋值给某个变量之后再使用。

require('./a')(); // a模块是一个函数,立即执行a模块函数

var data = require('./a').data; // a模块导出的是一个对象
import
impor它是编译时的(require是运行时的),它必须放在文件开头,而且使用格式也是确定的,不容置疑。它不会将整个模块运行后赋值给某个变量,而是只选择import的接口进行编译,这样在性能上比require好很多。require是赋值过程,import是解构过程

require 和 import的区别

require引入基础数据类型时,属于复制该变量

require引入复杂数据类型时,数据浅拷贝该对象

出现模块之间的循环引用时,会输出已经执行的模块,而未执行的模块不输出

CommonJS模块默认export的是一个对象,即使导出的是基础数据类型

require中 exports 和 module.exports 的区别

module.exports 初始值为一个空对象 {}

exports 是指向的 module.exports 的引用

require() 返回的是 module.exports 而不是 exports

即 module.exports 指向新的对象时,exports 断开了与 module.exports 的引用,那么通过 exports = module.exports 让 exports 重新指向 module.exports 即可。

---------------------
版权声明:本文为CSDN博主「huhanghao」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u011486491/article/details/90265901

转载于:https://www.cnblogs.com/shaozhu520/p/11330444.html

你可能感兴趣的文章
Struts2面试题
查看>>
GIT分支管理是一门艺术
查看>>
hdu 6073 Matching In Multiplication(拓扑排序+欧拉回路)
查看>>
挂载数据盘
查看>>
lintcode-28-搜索二维矩阵
查看>>
【洛谷1501】[国家集训队] Tree II(LCT维护懒惰标记)
查看>>
764. Largest Plus Sign
查看>>
驱动-helloworld(第一天)
查看>>
loj#6281. 数列分块入门 5
查看>>
hdoj5893
查看>>
理解管理信息系统
查看>>
第三章:选择结构(一)
查看>>
缓存(Cache)学习笔记
查看>>
Vue2.0 的漫长学习ing-1-3
查看>>
mount命令(用来挂载硬盘或镜像等)
查看>>
Bash shell中的位置参数$#,$*,$@,$0,$1,$2...及特殊参数$?,$-等的含义
查看>>
Android实现获取系统应用列表(转)
查看>>
5.User Interface/Styles and Themes
查看>>
Scrapy爬虫小demo总结
查看>>
Python基础之---04数据类型
查看>>