国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > 幫助中心 > 正文

淺談Node新版本13.2.0正式支持ES Modules特性

2024-07-09 22:41:53
字體:
來源:轉載
供稿:網友

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

Stability Index說明

Stability Index,即 Api 的穩定指數說明。它包括3個值:

Stability: 0 ,不推薦使用。表示該Api官方不推薦使用,該功能可能會發出警告。不能保證向后兼容。 Stability: 1,實驗性的。表示該Api已經支持使用性使用。但是在將來的任何發行版中都可能發生非向后兼容的更改或刪除。不建議在生產環境中使用該功能。

Stability: 2,穩定版。表示已經試驗完成,基本不會再發生改動,可以再生產環境中使用。

Unflag --experimental-modules

在 13.2.0的版本中,node 默認情況下會啟用對ECMAScript模塊的實驗支持,也就是不需要啟動參數了。那么nodejs是如何區分 esm 和 commonjs 的呢?這里翻譯一下官方文檔。
Node.js會將把以下內容視為ES模塊:

文件后綴為.mjs 當文件后綴為.js,或者無文件后綴時,看其package.json文件,package.json 中 type 字段值為 "module" 啟動參數添加 ―-input-type=module 使用傳遞字符參數給--eval,如$ node --eval 'import("http");

其他情況下,都會被識別為 commonjs?,F在node已經支持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.

這種情況,根據文件后綴按不同模塊處理。

// package.json{ "type": "module"}

當前目錄下,或者上級目錄中的package.json含有"type": "module"時,該模塊會被當作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".

如上圖注釋所示,如果當前文件目錄不包含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

這里就是使用傳遞字符參數給--eval,添加 --input-type啟動參數的情況。

快速體驗

目前13.2.0版本的官方文檔對ES Module的標記是 Stability: 1,你已經可以安裝新版本來試驗啦。相信在社區的共同努力下,很快就會進入 Stability: 2 正式穩定版了。

本地開發的時候,經常需要快速更新或切換不同的node版本。可以使用 nvm、n 等方案,還有一個跨平臺的本地管理方案就是 nvs。都可以選擇使用,這里我舉的例子,就是使用 nvs:

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阳春市| 横山县| 名山县| 南丹县| 宁武县| 延川县| 社旗县| 葫芦岛市| 泸水县| 抚宁县| 河源市| 黔南| 商丘市| 九江县| 正镶白旗| 吴川市| 类乌齐县| 宝丰县| 临西县| 楚雄市| 政和县| 三亚市| 西藏| 砀山县| 龙游县| 和田市| 南郑县| 奉新县| 北碚区| 麟游县| 宿州市| 平原县| 民乐县| 浦北县| 偏关县| 福安市| 石家庄市| 托克逊县| 德保县| 田林县| 威远县|