import与require的区别

Posted aidixie

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了import与require的区别相关的知识,希望对你有一定的参考价值。

 require 和 import,都是为了模块化开发,

遵循规范
–require 是Commonjs的规范,node应用是由模块组成的,遵从commonjs的规范。
–import是es6的一个语法标准,如果要兼容浏览器的话必须通过babel将es6转码为es5再执行

调用时间
–require是运行时调用,所以require理论上可以运用在代码的任何地方
–import是编译时调用,所以必须放在文件开头

核心

 import导出的对象必须与模块中的值一一对应,换一种说法就是导出的对象与整个模块进行结构赋值。对的,你没有听错。抓住重点,解构赋值

 require在导出的文件中定义module.export,导出的对象的类型不予限定(可以是任何类型,字符串,变量,对象,方法),在引入的文件中调用require()方法引入对象即可

 

require 是赋值过程并且是运行时才执行, import 是解构过程并且是编译时执行。require可以理解为一个全局方法,所以它甚至可以进行下面这样的骚操作,是一个方法就意味着可以在任何地方执行。而import必须写在文件的顶部。

 

  • require的性能相对于import稍低,因为require是在运行时才引入模块并且还赋值给某个变量,而import只需要依据import中的接口在编译时引入指定模块所以性能稍高

  • 在commom.js 中module.export 之后 导出的值就不能再变化,但是在es6的export中是可以的。
var a = 6
export default {a}
a = 7  //在es6中的export可以
var a = 6
module.export = a
a = 7   //在common.js中,这样是错误的

 

以上是关于import与require的区别的主要内容,如果未能解决你的问题,请参考以下文章

vue中的require与import之间的区别

“require(x)”和import x之间的区别

CommonJS模块与ES6模块的区别(require和import)

import与require的区别

js import 和 require的区别

vue之require与import之间的区别