成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Node.js 20 正式發布!你了解多少?

開發 前端
Node.js 20 將在 10 月份進入長期支持(LTS)期,在那之前,它將在接下來的六個月內成為“Current”版本。鼓勵探索這個最新版本提供的新功能和好處,并評估它對應用的潛在影響。

4 月 18 日,Node.js 正式發布了 20 版本,新版中的亮點包括全新的 Node.js 權限模型、同步的 import.meta.resolve、穩定的測試運行器、更新 V8 JavaScript 引擎到 11.3,Ada 到 2.0 等!

下載:https://nodejs.org/en/download/current/

注意,Node.js 20 將在 10 月份進入長期支持(LTS)期,在那之前,它將在接下來的六個月內成為“Current”版本。鼓勵探索這個最新版本提供的新功能和好處,并評估它對應用的潛在影響。

權限模型

Node.js 權限模型是一種實驗性機制,用于在執行期間限制對特定資源的訪問。在這個第一個包含權限模型的發布版本中,這些功能帶有以下能力:

  • 限制對文件系統的訪問(讀和寫),使用 --allow-fs-read 和 --allow-fs-write 命令;
  • 限制對 child_process 的訪問,使用 --allow-child-process 命令;
  • 限制對 worker_threads 的訪問,使用 --allow-worker 命令
  • 限制對原生插件的訪問(與 --no-addons 標志相同)

可用權限由 --experimental-permission 標志記錄。

使用 --experimental-permission? 啟動 Node.js 時,將限制訪問文件系統、生成進程和使用 node:worker_threads 的能力。

使用 Node.js 的開發人員現在可以更好地控制文件系統訪問,因為引入了 --allow-fs-read? 和 --allow-fs-write 標志。這些實驗性功能允許更細粒度地控制 Node.js 進程可以訪問文件系統的哪些部分。

要啟用這些標志,可以使用 --experimental-permission 標志和所需的權限。例如,運行以下命令允許對整個文件系統進行讀寫訪問:

node --experimental-permission --allow-fs-read

還可以通過將逗號分隔的值傳遞到標志中來指定文件系統訪問的特定路徑。例如,以下命令允許對 /tmp/ 文件夾進行寫訪問:

node --experimental-permission --allow-fs-write=/tmp/ --allow-fs-read=/home/index.js index.js

通配符模式也可以用于一次性允許訪問多個文件或文件夾。例如,以下命令允許讀取 /home/? 目錄中以 test 開頭的所有文件和文件夾:

node --experimental-permission --allow-fs-read=/home/test* index.js

當啟用權限模型時,process? 對象的新 permission 屬性可以用于在運行時檢查是否已授予某個權限。

process.permission.has('fs.write'); // true
process.permission.has('fs.write', '/home/nodejs/protected-folder'); // true

需要注意,這些功能仍處于實驗階段,可能會在 Node.js 的未來版本中發生更改。

自定義 ESM loader hooks 接近穩定版

通過 loader 提供自定義 ES module 生命周期 hook(--experimental-loader=./foo.mjs)現在在專用線程中運行,與主線程隔離開來。這為 loader 提供了單獨的作用域,并確保 loader 和應用代碼之間沒有交叉污染。

為了與瀏覽器行為一致,import.meta.resolve()? 現在返回同步操作;注意,用戶 loader 中的resolve? hook 仍然可以是異步操作,如果 loader 作者希望的話,在應用代碼中import.meta.resolve仍將返回同步操作。

這些改變是標記 ESM  loader 為穩定版前的最后幾個未解決問題。一旦社區中沒有重大錯誤報告一段時間,Node.js 團隊就打算將 loader 標志、import.meta.resolve和resolve和load hook 標記為穩定版。這使 ESM 的更廣泛采用成為可能,因為重要的利益相關者將擁有一個穩定的 API 來構建分析和報告庫。

V8 11.3

與往常一樣,Node.js 中包含了V8引擎的新版本(更新到版本11.3,是 Chromium 113 的一部分),帶來了改進的性能和新的語言特性,包括:

  • String.prototype.isWellFormed和toWellFormed;
  • 通過復制修改 Array 和 TypedArray 的方法;
  • 可調整大小的ArrayBuffer和可增長的SharedArrayBuffer;
  • 具有設置符號和字符串屬性的 RegExp v 標志;
  • WebAssembly 尾調用。

穩定版 Test Runner

Node.js 20 中包含了一個對 test_runner 模塊的重要變更。該模塊在最近的更新后被標記為穩定版。穩定版 Test Runner 包括編寫和運行測試所需的基本組件,包括:

  • describe、it/test和 hooks 用于結構化測試文件
  • mocking
  • 觀察模式
  • node --test 用于并行運行多個測試文件

以下是使用 Test Runner 的簡單示例:

import { test, mock } from 'node:test';
import assert from 'node:assert';
import fs from 'node:fs';

mock.method(fs, 'readFile', async () => "Hello World");
test('synchronous passing test', async (t) => {
assert.strictEqual(await fs.readFile('a.txt'), "Hello World");
});

性能

隨著新成立的 Node.js 性能團隊的加入,自上一次主要發布以來,性能再次成為了一個重點。Node.js 20對運行時的基礎部分(包括URL、fetch()和EventTarget)進行了許多改進。

初始化EventTarget?的成本減半,可以更快地訪問使用它的所有子系統。此外,V8 Fast API 調用已被利用,以改進諸如URL.canParse()和定時器等 API 的性能。

Node.js 20包括特定的變化,例如使用 C++ 編寫的快速且符合規范的 URL 解析器 Ada 的更新版本2.0。

現在需要注入Blob來準備單個可執行文件

該項目在過去一年中一直致力于支持單個可執行文件(SEA),并最近實現了初步支持。由于該功能仍處于實驗性階段,團隊將繼續完善這一方法。在 Node.js 20 中,構建單個可執行文件現在需要從 JSON 配置中注入 Node.js 準備的 Blob,而不是注入原始的JS文件。

例如:sea-config.json

{
"main": "hello.js",
"output": "sea-prep.blob"
}

這會將 blob 寫入 sea-prep.blob 文件:

node --experimental-sea-config sea-config.json

這個 Blob 現在可以注入到二進制文件中。這一改變是為了允許將多個共存資源嵌入到單個可執行文件(Single Executable Apps)中,從而開辟了新的用例。

Web Crypto API

Node.js 致力于與其他 JavaScript 環境的互操作性。例如,在 Node.js 20 中,Web Crypto API 函數的參數現在按照它們的 WebIDL 定義進行強制轉換和驗證,就像其他 Web Crypto API 實現一樣。這進一步提高了與其他 Web Crypto API 實現的互操作性。

正式支持 ARM64 Windows

Node.js 具有廣泛的平臺和架構支持,Node.js 現在包括適用于 ARM64 Windows 的二進制文件,可以在該平臺上進行本地執行。MSI、zip/7z包和可執行文件可以從 Node.js 下載站點以及所有其他平臺上獲得。CI 系統已更新,所有更改現在都在 ARM64 Windows 上進行了全面測試,以防止回歸并確保兼容性。

Web Assembly System Interface(WASI)的進展

該項目繼續在 Node.js 中實現WASI。值得注意的進展是,雖然它是實驗性的,但不再需要命令行選項來啟用 WASI,這應該使其更容易使用。WASI 團隊期待著 preview2,并為未來做了一些更改。其中包括在調用new WASI()時添加版本選項。在20.x版本中,版本是必需的,并且沒有默認值。這對于支持新版本的應用非常重要,因為它們不會默認使用可能已過時的版本。然而,這也意味著任何依賴于版本默認值的代碼都需要更新以請求特定版本。

注意事項

需要注意,Node.js 14 將在2023年4月停止維護,因此建議您開始計劃升級到 Node.js 18(LTS)或Node.js 20(即將成為LTS)。

Node.js 16(LTS)將在2023年9月停止維護,這是為了與OpenSSL 1.1.1的支持結束時間一致,該時間將于2024年4月結束。

完整更新:https://nodejs.org/en/blog/release/v20.0.0

更新概述:https://nodejs.org/en/blog/announcements/v20-release-announce

責任編輯:武曉燕 來源: 前端充電寶
相關推薦

2017-09-22 14:04:33

前端Node.js新特性

2017-06-02 10:00:26

前端Node.js

2015-06-23 15:27:53

HproseNode.js

2021-11-24 08:51:32

Node.js監聽函數

2023-10-18 10:10:29

Node.js 21前端

2013-03-08 09:54:00

BAENode.js百度云

2011-12-05 09:39:57

Node.js

2012-07-12 10:15:15

Node.js

2022-09-12 15:58:50

node.js微服務Web

2022-09-04 15:54:10

Node.jsAPI技巧

2015-03-10 10:59:18

Node.js開發指南基礎介紹

2013-11-01 09:34:56

Node.js技術

2011-05-24 15:09:11

NodeJS

2021-11-16 08:51:29

Node JavaScript變量類型

2011-11-10 08:55:00

Node.js

2012-10-24 14:56:30

IBMdw

2023-11-16 14:56:13

2023-06-30 08:05:41

2011-09-08 13:46:14

node.js

2011-11-01 10:30:36

Node.js
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 男女视频在线观看免费 | 亚洲一级淫片 | 午夜小影院 | 99久久视频| 亚洲国产精品久久久 | 操人网| 色资源在线 | 久久精品在线免费视频 | 亚洲国产精品一区 | 人人澡人人射 | 欧美精品一区二区三区四区 | 69精品久久久久久 | 91精品国产一区二区三区 | 免费在线一区二区 | 国产精品第2页 | 国产精品视频www | 久久久蜜桃一区二区人 | www精品美女久久久tv | 久久精品99国产精品 | 国产精品毛片av | 精品无码久久久久久国产 | 日韩不卡在线 | 在线观看视频91 | 亚洲精品在线视频 | 国产精品视频999 | 日韩精品亚洲专区在线观看 | 日本黄色的视频 | 国产精品99久久久久久久久久久久 | 国产一区在线免费观看 | 91亚洲国产成人久久精品网站 | 先锋影音资源网站 | 亚洲瑟瑟| 求个av网址 | 欧美激情一区二区 | 97人人草| 黄色大片免费看 | 欧美男男videos| 中文字幕免费视频 | 日韩欧美国产不卡 | 欧美三级三级三级爽爽爽 | 午夜免费网 |