最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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語法的評論 (共 條)

分享到微博請遵守國家法律
舒兰市| 金湖县| 万载县| 开封市| 郓城县| 宁波市| 富源县| 台南县| 仁化县| 阜康市| 息烽县| 建瓯市| 高唐县| 昭平县| 乳山市| 永年县| 文山县| 南阳市| 平定县| 凤冈县| 平顶山市| 临江市| 太和县| 右玉县| 乌拉特前旗| 勃利县| 茂名市| 根河市| 昌江| 屯门区| 娄烦县| 海淀区| 永州市| 偃师市| 银川市| 兴隆县| 边坝县| 濉溪县| 叙永县| 当雄县| 湟源县|