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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

web前端技术分享:详解模块化require 和 import的区别

發布時間:2024/9/30 HTML 68 豆豆
生活随笔 收集整理的這篇文章主要介紹了 web前端技术分享:详解模块化require 和 import的区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在前端開發中,我們可以使用很多模塊化的庫來幫助我們更好的實現效果,有一些庫的功能類似很多同學就不知道該如何選擇,比如require和import,今天小千就給大家介紹一下兩者的區別。

一、區別

1.require是commonjs的規范,在node中實現的api,import是es的語法,由編譯器處理。所以import可以做模塊依賴的靜態分析,配合webpack、rollup等可以做treeshaking。

2.commonjs導出的值會復制一份,require引入的是復制之后的值(引用類型只復制引用),es module導出的值是同一份(不包括export default),不管是基礎類型還是應用類型。

3.寫法上有差別,import可以使用import * 引入全部的export,也可以使用import aaa, { bbb}的方式分別引入default和非default的export,相比require更靈活。

二、require和import會不會循環引用?

答案是不會,因為模塊執行后會把導出的值緩存,下次再require或者import不會再次執行。這樣也就不會循環引用了。比如a引入了b,b引入了a,如果a再次執行那么會再引入b,那就循環起來了,但實際上會做緩存,再次引入不會再執行。可以通過require.cache來查看緩存的模塊,key為require.resolve(path)的結果。

三、模塊中有定時器改變了導出的值,導出的值會不會變?

結果是import引入的值是2,而require引入的值一直是1,這也是require和imort很重要的一個區別,es module的export導出的值會靜態的綁定,而commonjs exports導出的值是一個對象,會復制一份。這樣也就出現了這樣的現象。

四、總結

問 require和import的區別就是問commonjs和es module的區別,這兩者一個是api的規范,一個是語言的語法,所以后者可以做靜態分析,基于這個實現treeshaking,同時es module會靜態的綁定導出的值,而commonjs會復制一份。但兩者都會做緩存,所以不會有循環引用問題。

以上就是require和import的區別介紹了。最后歡迎對web前端感興趣的小伙伴關注小千,后面會繼續分享更多web前端知識。

本文來自千鋒教育,轉載請注明出處。

總結

以上是生活随笔為你收集整理的web前端技术分享:详解模块化require 和 import的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。