国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

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

分享到微博請遵守國家法律
阳东县| 黄梅县| 图片| 梅河口市| 陵川县| 科尔| 天水市| 博白县| 乌兰察布市| 辉南县| 沁阳市| 双辽市| 迭部县| 新巴尔虎右旗| 墨竹工卡县| 诸暨市| 门头沟区| 泸定县| 平安县| 廊坊市| 揭东县| 固安县| 桐城市| 绥德县| 买车| 获嘉县| 乌苏市| 遂昌县| 高密市| 山阳县| 喀喇沁旗| 广州市| 彩票| 高淳县| 鹤壁市| 察雅县| 互助| 五家渠市| 甘南县| 霍山县| 二连浩特市|