吊打面試官前端系列(一): require和import的區別
- 2020 年 4 月 8 日
- 筆記
如何吊打面試官?我的理解是,面試官問你的問題,你要回答的比他知道的更深入。
require和import的區別
1.import在程式碼編譯時被載入,所以必須放在文件開頭,require在程式碼運行時被載入,所以require理論上可以運用在程式碼的任何地方,所以import性能更好。 2.import引入的對象被修改時,源對象也會被修改,相當於淺拷貝,require引入的對象被修改時,源對象不會被修改,官網稱值拷貝,我們可以理解為深拷貝。 3.import有利於tree-shaking(移除JavaScript上下文中未引用的程式碼),require對tree-shaking不友好。 4.import會觸發程式碼分割(把程式碼分離到不同的bundle中,然後可以按需載入或者並行載入這些文件),require不會觸發。 5.import是es6的一個語法標準,如果要兼容瀏覽器的話必須轉化成es5的語法,require 是 AMD規範引入方式。
目前所有的引擎都還沒有實現import,import最終都會被轉碼為require,在webpack打包中,import和require都會變為_webpack_require_。
歡迎補充。