欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

require和import的区别

程序员文章站 2022-06-04 16:48:30
...

由于最近刚离职没有工作,就在家看代码刚好看到require,所以就写篇文章给自己加深点印象(顺便复习一下,手动滑稽一下。)

回归到整体(两者的区别)

  1. require是CommonJs的语法(引入的是AMD的规范) CommonJs模块是对象
    import是ES6的语法 es6模块不是对象
  2. requrie是运行时加载 (生成一个对象,再从对象上取值)
    import是编译时加载(确认引用关系后在输出,import变量会提升:列1)
  3. require赋值或者浅拷贝(基本类型是复制,对象类型是浅拷贝)
    import类似于解构赋值 (当我需要谁的时候就调用谁)

列:1 (import变量提升)

// a.js
let name = 'will
let setName = () => {
	name = 'new will'
	console.log('set')
}
export {set}

// index.js
set() // set方法不会报错(‘set’)
impotrt {set} from 'a.js'

列2(requrie复制或前拷贝,import解构)

(require)
// a.js
let a = 0
let count = () => {
	a += 2
	console.log('conut', a)
}
module.export = { //对象类型是浅拷贝,基本类型是复制
	a,
	count
}


// index 
let obj = require('a.js')
console.log(obj) // {a: 0, count:f} 
obj.set() // 'count', 2
setTimeout(() => {
	console.log(obj.a) // 0
}, 1000)




(import)
// a.js 
let a = 0
let count = () => {
	a += 2
	console.log('conut', a)
}
export {
	a,
	count
}

// index.js
import {a, count} from 'a.js'
console.log(a)// 0
set()
setTimeout(() => {
	console.log(a) // 2 //模块内部的更改模块外面的也会跟着改变
}, 1000)