五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

吐槽一下ESM的import語法

2021-01-12 18:06 作者:useStrict  | 我要投稿

對,這其實(shí)是一篇凡學(xué)作品。


ESM即EcmaScript Module,也就是基于EcmaScript模塊規(guī)范的JavaScript模塊,至于為什么叫ESM,是因為在它出現(xiàn)之前,JavaScript已經(jīng)有了例如CommonJS和AMD的其他模塊規(guī)范。

ESM有兩種引入方式,static import和dynamic import,static import會在腳本執(zhí)行前完成引入,因此必須位于所有非import語句之前,dynamic import會在調(diào)用時異步執(zhí)行引入,并返回一個Promise。


本文重點(diǎn)吐槽一下static import的語法。它的語法大概如下:

import <identifier> from?<module-name>

這里的module-name是待引入的模塊的模塊名,通常是一個路徑,identifier可以有多種情況,并使用類似解構(gòu)賦值的語法(注意as,static import并不使用解構(gòu)賦值):

import foo from './bar.js'

import * as?foo from './bar.js'

import {?foo, bar, baz?}?from?'./bar.js'

import {?foo as f, bar as br, baz as bz?}?from?'./bar.js'

import foo, {?foo as f,?bar as br, baz as bz?}?from?'./bar.js'

import?foo, * as f?from?'./bar.js'

以及

import <module-name>,

在這種情況下,模塊的值不會被引入,但模塊依然會被執(zhí)行,其副作用會生效。

這種寫法相當(dāng)于import(<module-name>)。


這初看上去和const <identifier> = require(<module-name>),以及const <inentifier> = await import(<module-name>)保持了良好的一致性,但單獨(dú)的require(<module-name>)和import(<module-name>)是合法的,而from <module-name>卻不合語法,相對的,正確的語法是import <module-name>。

然而我們在引入模塊時,首先想到的是引入哪個模塊,然后才是引入這個模塊的哪些部分。

所以這就成了一個問題:因為我們其實(shí)首先寫的是from <module-name>,然后才是import <identifier>,但我們又不能先寫from。

反觀隔壁python,它的import語法之一,就是(比如說

from numpy import ...

把這兩部分倒過來,寫起來會舒服很多,而且自動補(bǔ)全也能更好得發(fā)揮作用了。而現(xiàn)在,如果想利用自動補(bǔ)全,則必須先寫出類似

import {} from <module-name>

的形式,然后再返回到{}。


以上。

另,homebrew的aarch64版已經(jīng)轉(zhuǎn)正有一段時間了,但是homebrew aarch64的qemu還需要等待一段時間。

以及nodejs還是沒有aarch64版。

吐槽一下ESM的import語法的評論 (共 條)

分享到微博請遵守國家法律
体育| 北辰区| 芦山县| 遂川县| 温泉县| 柞水县| 凭祥市| 通河县| 西宁市| 轮台县| 塘沽区| 宁海县| 精河县| 乌审旗| 华容县| 怀来县| 涞源县| 襄汾县| 封丘县| 广丰县| 五台县| 特克斯县| 忻州市| 玛纳斯县| 庐江县| 彩票| 长顺县| 深州市| 林芝县| 南昌市| 桓仁| 西安市| 清丰县| 南陵县| 景德镇市| 昌平区| 顺义区| 铁岭市| 韶山市| 吉林省| 磐石市|