commonjs與es6模組化有什麼差別
區別:1、CommonJS模組是運行時加載,而ES6模組是編譯時輸出接口;2、CommonJS模組的require()是同步加載模組,而ES6模組的import命令是異步加載;3 、CommonJS是對模組的淺拷貝,ES6是對模組的引入。
本教學操作環境:windows7系統、ECMAScript 6版、Dell G3電腦。
CommonJS
對於基本資料類型,屬於複製。即會被模組快取。同時,在另一個模組可以對該模組輸出的變數重新賦值。
對於複雜資料類型,屬於淺拷貝。由於兩個模組所引用的物件指向同一個記憶體空間,因此對該模組的值做修改時會影響另一個模組。
當使用require指令載入某個模組時,就會執行整個模組的程式碼。
當使用require指令載入同一個模組時,不會再執行該模組,而是取到快取之中的值。也就是說,CommonJS模組無論加載多少次,都只會在第一次加載時運行一次,以後再加載,就返回第一次運行的結果,除非手動清除系統緩存。
循環載入時,屬於載入時執行。也就是腳本程式碼在require的時候,就會全部執行。一旦出現某個模組被"循環載入",就只輸出已經執行的部分,還未執行的部分不會輸出。
ES6模組
#ES6模組中的值屬於【動態只讀參考】。
對於唯讀來說,也就是不允許修改引入變數的值,import的變數是唯讀的,不論是基本資料型別還是複雜資料型別。當模組遇到import指令時,就會產生一個只讀引用。等到腳本真正執行時,再根據這個唯讀引用,到被載入的那個模組裡面去取值。
對於動態來說,原始值會發生變化,import載入的值也會改變。不論是基本資料型別還是複雜資料型別。
循環載入時,ES6模組是動態參考。只要兩個模組之間存在某個引用,程式碼就能夠執行。
ES6模組與CommonJS模組的差異
1.CommonJS 模組是執行時間加載,ES6 模組是編譯時輸出介面。
2.CommonJS 模組的require()是同步加載模組,ES6 模組的import命令是異步加載,有一個獨立的模組依賴的解析階段。
3.CommonJS是對模組的淺拷貝,ES6 Module是對模組的引入,即ES6 Module只存唯讀,不能改變其值,具體點就是指針指向不能變,類似const 。
4.import的介面是read-only(唯讀狀態),不能修改其變數值。即不能修改其變數的指標指向,但可以改變變數內部指標指向。可以對commonJS對重新賦值(改變指標指向),但是對ES6 Module賦值會編譯報錯。
ES6模組與CommonJS模組的共同點:
1.CommonJS和ES6 Module都可以對引⼊的物件進⾏賦值,也就是對物件內部屬性的值進行改變。
【相關推薦:javascript影片教學、web前端】
以上是commonjs與es6模組化有什麼差別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

async是es7的。 async和await是ES7中新增內容,是對於非同步操作的解決方案;async/await可以說是co模組和生成器函數的語法糖,用更清晰的語意解決js非同步程式碼。 async顧名思義是「非同步」的意思,async用於聲明一個函數是異步的;async和await有一個嚴格規定,兩者都離不開對方,且await只能寫在async函數中。

如何優化Java程式碼的可維護性:經驗與建議在軟體開發過程中,編寫具有良好可維護性的程式碼是至關重要的。可維護性意味著程式碼能夠被輕鬆理解、修改和擴展,而不會引發意外的問題或額外的工作量。對於Java開發者來說,如何優化程式碼的可維護性是一個重要課題。本文將分享一些經驗和建議,幫助Java開發者提升其程式碼的可維護性。遵循規範的命名規則規範的命名規則能夠使程式碼更易讀,

Python是一門簡單易學高效的程式語言,但當我們在編寫Python程式碼時,可能會遇到一些程式碼複雜度過高的問題。這些問題如果不解決,會使得程式碼難以維護,容易出錯,降低程式碼的可讀性和可擴充性。因此,在本文中,我們將討論如何解決Python程式碼中的程式碼複雜度過高錯誤。了解程式碼複雜度程式碼複雜度是一種度量程式碼難以理解和維護的性質。在Python中,有一些指標可以用

Python作為一門高階程式語言,在軟體開發中得到了廣泛應用。雖然Python有許多優點,但許多Python程式設計師經常面臨的問題是,程式碼的可維護性較差。 Python程式碼的可維護性包括程式碼的易讀性、可擴充性、可重複使用性等面向。在本篇文章中,我們將著重討論如何解決Python程式碼的可維護性差的問題。一、代碼的易讀性代碼可讀性是指代碼的易讀程度,它是代碼可維護性的核

es5中可以利用for語句和indexOf()函數來實現數組去重,語法“for(i=0;i<數組長度;i++){a=newArr.indexOf(arr[i]);if(a== -1){...}}」。在es6中可以利用擴充運算子、Array.from()和Set來去重;需要先將陣列轉為Set物件來去重,然後利用擴充運算子或Array.from()函數來將Set物件轉回數組即可。

在es6中,暫時性死區是語法錯誤,是指let和const命令使區塊形成封閉的作用域。在程式碼區塊內,使用let/const指令宣告變數之前,變數都是不可用的,在變數宣告之前屬於該變數的「死區」;這在語法上,稱為「暫時性死區」。 ES6規定暫時性死區和let、const語句不出現變量提升,主要是為了減少運行時錯誤,防止在變量聲明前就使用這個變量,從而導致意料之外的行為。

ES6 import會產生變數提升的現象。變數提升是將變數宣告提升到它所在作用域的最開始的部分。 js要經歷編譯跟執行階段,在編譯階段的時候,會蒐集所有的變量聲明並且提前聲明變量,而其他的語句都不會改變他們的順序,因此,在編譯階段的時候,第一步就已經執行了,而第二部則是在執行階段執行到該語句的時候才執行。

在現代化的網路開發中,Vue作為一款靈活、易上手且功能強大的前端框架,被廣泛應用於各種網站和應用程式的開發中。在開發大型專案時,如何簡化程式碼的複雜度,讓專案更容易維護,是每個開發者都必須面對的問題。而模組化開發,可以幫助我們更好地組織程式碼,提高開發效率和程式碼可讀性。下面,我將分享一些在Vue大型專案中實現模組化開發的經驗和指南:1.分工明確在一個大型專案中
