日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

里面怎么使用import引用_谈谈模块化的 require 和 import

發(fā)布時(shí)間:2025/3/12 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 里面怎么使用import引用_谈谈模块化的 require 和 import 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、區(qū)別

  • require是commonjs的規(guī)范,在node中實(shí)現(xiàn)的api,import是es的語(yǔ)法,由編譯器處理。所以import可以做模塊依賴的靜態(tài)分析,配合webpack、rollup等可以做treeshaking。
  • commonjs導(dǎo)出的值會(huì)復(fù)制一份,require引入的是復(fù)制之后的值(引用類(lèi)型只復(fù)制引用),es module導(dǎo)出的值是同一份(不包括export default),不管是基礎(chǔ)類(lèi)型還是應(yīng)用類(lèi)型。
  • 寫(xiě)法上有差別,import可以使用import * 引入全部的export,也可以使用import aaa, { bbb}的方式分別引入default和非default的export,相比require更靈活。
  • 二、require和import會(huì)不會(huì)循環(huán)引用?

    答案是不會(huì),因?yàn)槟K執(zhí)行后會(huì)把導(dǎo)出的值緩存,下次再require或者import不會(huì)再次執(zhí)行。這樣也就不會(huì)循環(huán)引用了。比如a引入了b,b引入了a,如果a再次執(zhí)行那么會(huì)再引入b,那就循環(huán)起來(lái)了,但實(shí)際上會(huì)做緩存,再次引入不會(huì)再執(zhí)行。可以通過(guò)require.cache來(lái)查看緩存的模塊,key為require.resolve(path)的結(jié)果。

    三、模塊中有定時(shí)器改變了導(dǎo)出的值,導(dǎo)出的值會(huì)不會(huì)變?

    // a.js let a = 1 setTimeout(() => {a = 2 }, 1000) module.exports = a// test.js const a = require('./a') setTimeout(() => {console.log(a) }, 2000)// a2.js let a = 1 setTimeout(() => {a = 2 }, 1000) export {a }// test2.js import { a } from './a2'setTimeout(() => {console.log(a) }, 2000)

    結(jié)果是import引入的值是2,而require引入的值一直是1,這也是require和imort很重要的一個(gè)區(qū)別,es module的export導(dǎo)出的值會(huì)靜態(tài)的綁定,而commonjs exports導(dǎo)出的值是一個(gè)對(duì)象,會(huì)復(fù)制一份。這樣也就出現(xiàn)了這樣的現(xiàn)象。

    四、總結(jié)

    問(wèn) require和import的區(qū)別就是問(wèn)commonjs和es module的區(qū)別,這兩者一個(gè)是api的規(guī)范,一個(gè)是語(yǔ)言的語(yǔ)法,所以后者可以做靜態(tài)分析,基于這個(gè)實(shí)現(xiàn)treeshaking,同時(shí)es module會(huì)靜態(tài)的綁定導(dǎo)出的值,而commonjs會(huì)復(fù)制一份。但兩者都會(huì)做緩存,所以不會(huì)有循環(huán)引用問(wèn)題。

    總結(jié)

    以上是生活随笔為你收集整理的里面怎么使用import引用_谈谈模块化的 require 和 import的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。