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

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

分享到微博請遵守國家法律
渝北区| 江陵县| 鲁甸县| 河东区| 闽清县| 依兰县| 松阳县| 长阳| 龙山县| 读书| 鹰潭市| 安多县| 榆树市| 五指山市| 彰化市| 柘城县| 同心县| 永年县| 兖州市| 牟定县| 广安市| 陇川县| 张家界市| 都安| 凯里市| 蒙自县| 汶上县| 保德县| 临海市| 五常市| 油尖旺区| 精河县| 淅川县| 恩施市| 康保县| 宁远县| 赤城县| 双牌县| 甘孜| 巴里| 嘉兴市|