在本月 21 日,即2019.11.21,Node.js 發(fā)布了 13.2.0 版本,更新了一些特性。其中最令人興奮的莫過于正式取消了 --experimental-modules 啟動參數(shù)。這說明Node.js 正式支持 ES modules。我們一起來看看。

成都創(chuàng)新互聯(lián)2013年開創(chuàng)至今,先為黃陵等服務(wù)建站,黃陵等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為黃陵企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
Stability Index說明
Stability Index,即 Api 的穩(wěn)定指數(shù)說明。它包括3個值:
Stability: 2,穩(wěn)定版。表示已經(jīng)試驗完成,基本不會再發(fā)生改動,可以再生產(chǎn)環(huán)境中使用。
Unflag --experimental-modules
在 13.2.0的版本中,node 默認(rèn)情況下會啟用對ECMAScript模塊的實驗支持,也就是不需要啟動參數(shù)了。那么nodejs是如何區(qū)分 esm 和 commonjs 的呢?這里翻譯一下官方文檔。
Node.js會將把以下內(nèi)容視為ES模塊:
其他情況下,都會被識別為 commonjs。現(xiàn)在node已經(jīng)支持esm和commonjs了,我們在使用的時候,最好還是指定一下模塊。
舉個例子🌰
import './legacy-file.cjs'; // Loaded as CommonJS since .cjs is always loaded as CommonJS. import 'commonjs-package/src/index.mjs'; // Loaded as ES module since .mjs is always loaded as ES module.
這種情況,根據(jù)文件后綴按不同模塊處理。
// package.json
{
"type": "module"
}
當(dāng)前目錄下,或者上級目錄中的package.json含有"type": "module"時,該模塊會被當(dāng)作ES Module。
// my-app.js, in an ES module package scope because there is a package.json // file in the same folder with "type": "module". import './startup/init.js'; // Loaded as ES module since ./startup contains no package.json file, // and therefore inherits the ES module package scope from one level up. import 'commonjs-package'; // Loaded as CommonJS since ./node_modules/commonjs-package/package.json // lacks a "type" field or contains "type": "commonjs". import './node_modules/commonjs-package/index.js'; // Loaded as CommonJS since ./node_modules/commonjs-package/package.json // lacks a "type" field or contains "type": "commonjs".
如上圖注釋所示,如果當(dāng)前文件目錄不包含package.json,則會看其父級目錄的package.json文件,然后判斷type類型。
node --input-type=module --eval "import { sep } from 'path'; console.log(sep);"
echo "import { sep } from 'path'; console.log(sep);" | node --input-type=module
這里就是使用傳遞字符參數(shù)給--eval,添加 --input-type啟動參數(shù)的情況。
快速體驗
目前13.2.0版本的官方文檔對ES Module的標(biāo)記是 Stability: 1,你已經(jīng)可以安裝新版本來試驗啦。相信在社區(qū)的共同努力下,很快就會進(jìn)入 Stability: 2 正式穩(wěn)定版了。
本地開發(fā)的時候,經(jīng)常需要快速更新或切換不同的node版本。可以使用 nvm、n 等方案,還有一個跨平臺的本地管理方案就是 nvs。都可以選擇使用,這里我舉的例子,就是使用 nvs:
$ nvs add node/13.2.0 $ nvs use 13.2.0 $ node -v 13.2.0
趕緊嘗試一下吧~
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。
名稱欄目:淺談Node新版本13.2.0正式支持ESModules特性
鏈接URL:http://chinadenli.net/article24/pgpeje.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、響應(yīng)式網(wǎng)站、網(wǎng)站改版、企業(yè)建站、、手機網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)