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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ES6之Module的语法(1)

發布時間:2023/12/10 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ES6之Module的语法(1) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.概述

CommonJS 和 AMD 模塊,都只能在運行時確定這些東西。比如,CommonJS 模塊就是對象,輸入時必須查找對象屬性

上面代碼的實質是整體加載fs模塊(即加載fs的所有方法),生成一個對象(_fs),然后再從這個對象上面讀取3個方法(因為CommonJS是從運行完成后的module.exports中加載的,所以只能在運行時確定這些東西,而不是像ES6那樣在靜態的時候才確定)。這種加載稱為“運行時加載”,因為只有運行時才能得到這個對象,導致完全沒辦法在編譯時做“靜態優化”

ES6 模塊不是對象,而是通過export命令顯式指定輸出的代碼,再通過import命令輸入

上面代碼的實質是從fs模塊加載3個方法,其他方法不加載。這種加載稱為“編譯時加載”或者靜態加載,即 ES6 可以在編譯時就完成模塊加載,效率要比 CommonJS 模塊的加載方式高

綜上:CommonJS是先加載整體,然后從整體中取出想要的方法。而ES6是直接加載模塊指定輸出的方法,其余方法不加載。CommonJS是require,ES6是export&import

2.ES6 模塊之中,頂層的this指向undefined,即不應該在頂層代碼使用this

3.export命令

export命令用于規定模塊的對外接口,import命令用于輸入其他模塊提供的功能

一個模塊就是一個獨立的文件。該文件內部的所有變量,外部無法獲取。如果你希望外部能夠讀取模塊內部的某個變量,就必須使用export關鍵字輸出該變量。

注意:這里變量之前必須帶有標識符var,否則會報錯

export的另外一種寫法

export命令除了輸出變量,還可以輸出函數或類(class)

export輸出的變量就是本來的名字,但是可以使用as關鍵字重命名

這里本來輸出函數本來的名字v1和v2,然后通過as關鍵字對其進行了重新命名

需要特別注意的是,export命令規定的是對外的接口,必須與模塊內部的變量建立一一對應關系

上面兩種寫法都會報錯,因為沒有提供對外的接口。第一種寫法直接輸出1,第二種寫法通過變量m,還是直接輸出1。1只是一個值,不是接口。正確的寫法是下面這樣

上面三種寫法都是正確的,規定了對外的接口m。其他腳本可以通過這個接口,取到值1。它們的實質是,在接口名與模塊內部變量之間,建立了一一對應的關系

同樣的,function和class的輸出,也必須遵守這樣的寫法

另外,export語句輸出的接口,與其對應的值是動態綁定關系,即通過該接口,可以取到模塊內部實時的值

上面代碼輸出變量foo,值為bar,500毫秒之后變成baz

最后,export命令可以出現在模塊的任何位置,只要處于模塊頂層就可以。如果處于塊級作用域內,就會報錯

上面代碼中,export語句放在函數之中,結果報錯

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的ES6之Module的语法(1)的全部內容,希望文章能夠幫你解決所遇到的問題。

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