国产一区二区精品-国产一区二区精品久-国产一区二区精品久久-国产一区二区精品久久91-免费毛片播放-免费毛片基地

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > 千鋒web前端培訓班:詳解模塊化require 和 import的區別

千鋒web前端培訓班:詳解模塊化require 和 import的區別

來源:千鋒教育
發布人:小千
時間: 2021-08-27 09:45:00 1630028700

      在前端開發中,我們可以使用很多模塊化的庫來幫助我們更好的實現效果,有一些庫的功能類似很多同學就不知道該如何選擇,比如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)的結果。

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

千鋒<a href=web前端培訓1" />

      結果是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前端培訓:http://www.kei0345678.cn/page/html5.html

tags:
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT