国产探花免费观看_亚洲丰满少妇自慰呻吟_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:

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 七台河市| 炎陵县| 杂多县| 承德县| 华亭县| 资源县| 邵阳县| 衡南县| 凌海市| 青河县| 夏河县| 孝感市| 长海县| 陇西县| 灵石县| 广东省| 仁布县| 长春市| 齐河县| 高碑店市| 衡阳市| 沾益县| 久治县| 九寨沟县| 罗城| 元氏县| 绥芬河市| 阿城市| 芮城县| 炉霍县| 天峨县| 新余市| 临江市| 长垣县| 新竹县| 崇仁县| 株洲县| 五莲县| 淄博市| 密山市| 南宫市|