关于node.js:Nodejs-20-几个令人大开眼界的特性

71次阅读

共计 3616 个字符,预计需要花费 10 分钟才能阅读完成。

前言:欢送来到 Node.js 20

Node.js 20 曾经公布,带来了翻新和激动人心的新时代。这个开创性的版本于 2023 年 4 月 18 日首次亮相,并将在 2023 年 10 月公布长期反对(LTS)版本,并且将继续反对至 2026 年 4 月,上面小编就为大家介绍一下 Node.js20 的几个新个性:

1.Node.js 权限拜访

Node.js 20 正式推出了权限模型,这是 Rafael Gonzaga 提供的一项试验性功能,能够在程序运行时限度对特定资源的拜访。

要应用这个弱小的性能,只需启用 –experimental-permission 标记,例如:

node --experimental-permissions myApp.js

这将限度所有可用权限的拜访,这样就能够确保应用程序远离任何不受欢迎的入侵者。

文件读写零碎

要容许拜访文件系统,请应用 –allow-fs-read 和 –allow-fs-write 标记:

$ node --experimental-permission --allow-fs-read=* --allow-fs-write=* index.js
 Hello world!
 (node:19836) ExperimentalWarning: Permission is an experimental feature
 (Use `node --trace-warnings ...` to show where the warning was created)

上面是具体指令的含意:

  • –allow-fs-read=*- 它将容许所有 FileSystemRead 操作。
  • –allow-fs-write=*- 它将容许所有 FileSystemWrite 操作。
  • –allow-fs-write=/tmp/- 它将容许 FileSystemWrite 拜访该 /tmp/ 文件夹。
  • –allow-fs-read=/tmp/,/home/.gitignore- 它容许 FileSystemRead 拜访 /tmp/ 文件夹 门路 /home/.gitignore。

2. 自定义 ESM 加载器钩子

Node.js 20 通过加载器提供的自定义钩子

(–experimental-loader=./mr.mjs)在专用线程上运行,确保所有都放弃颠三倒四。

以下是如何应用自定义加载器的疾速示例:

loading.mjs

export async function resolve(specifier, parentModuleURL, defaultResolve) {console.log("Resolving:", specifier);
  return defaultResolve(specifier, parentModuleURL);
 }
export async function load(url, defaultLoad) {console.log("Loading:", url);
  return defaultLoad(url);
 }

index.js

console.log("Hello, Node.js 20!");

cmd

node --experimental-loader=./loader.mjs main.js

这个自定义加载器将记录每个模块的解析和加载过程。

3. 同步的 import.meta.resolve()

为了跟上浏览器行为,当初 import.meta.resolve 函数返回同步。但仍能够依据须要自定定义加载器解析钩子为异步或同步函数。

以下是一个疾速示例,展现它是如何工作的:

module.mjs

(async () => {const resolvedURL = import.meta.resolve('./otherModule.mjs');
  console.log("Resolved URL:", resolvedURL);
const asyncResolvedURL = await import.meta.resolve('./otherModule.mjs');
  console.log("Async resolved URL:", asyncResolvedURL);
 })();

这个示例演示了 import.meta.resolve 函数的同步和异步用法。

4.V8 引擎降级:开释野兽!

以下是一些 V8 引擎新性能的疾速概述:

  • 施展正则表达式的有限后劲:应用设置符号 + 字符串属性的 RegExp v 标记,开启更灵便、更富表现力的语法!
  • 动静调整内存大小,优化性能尽在把握:可调整大小的 ArrayBuffer 和可增长的 SharedArrayBuffer,让内存治理达到前所未有的境界!
  • 平安而可预测的数组操作方法:复制更改 Array 和 TypedArray 的形式,让代码既平安又可控,不批改原始数据!
  • 打造格局良好的 Unicode 字符串:通过 String.prototype.isWellFormed 和 toWellFormed,验证并转换字符串为完满的 Unicode 格局!
  • 辞别堆栈溢出,迎接高效递归:WebAssembly 尾调带来有限递归的可能性,让堆栈溢出成为历史!

5. 稳固的测试运行器

Node.js 20 中的 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) => {
  // This test passes because it does not throw an exception.
  assert.strictEqual(await fs.readFile('a.txt'), "Hello World");
 });

6. 性能加强:为应用程序提速!

Node.js 20 重视性能,提供了一些杰出的加强性能,将使利用程序运行更加晦涩和疾速。以下是一些亮点:

  • 事件指标初始化老本升高:初始化当初只须要一半的工夫,使应用程序更加迅捷。
  • V8 疾速 API 调用:在诸如 URL.canParse() 和定时器等 API 中享受改良的性能。

7.Ada 2.0:新一代 URL 解析器巨星

Ada 2.0 是用 C++ 编写的最新和最棒的 URL 解析器版本。这个工具为 URL 解析性能带来了显著的改良,使的应用程序比以往更加高效。
以下是 Ada 2.0 如何应用的一个简略示例:

import {domainToASCII, domainToUnicode} from 'node:url';
const asciiDomain = domainToASCII('example.com');
 console.log("ASCII Domain:", asciiDomain);
 const unicodeDomain = domainToUnicode('xn--exmple-cua.com');
 console.log("Unicode Domain:", unicodeDomain);

以上代码演示了如何应用 Ada 2.0 将域名转换为其 ASCII 和 Unicode 示意模式。

8. 筹备 SEAs:杰出的 Blob 繁多可执行应用程序。

Node.js 20 引入了一种新的构建繁多可执行应用程序(SEAs)的形式,通过将由 Node.js 从 JSON 配置中筹备的 Blob 注入其中。这容许将多个共存的资源嵌入到 SEAs 中。

它的工作原理如下:

{
  "main": "hello.js",
  "output": "prep.blob"
 }
node --experimental-sea-config sea-config.json

这将创立一个 prep.blob 文件,其中蕴含了 SEA 所需的资源。

9. 网络加密 API

在 Node.js 20 中 Web Crypto API 函数参数的强制转换和验证遵循 WebIDL 定义,就像 Web Crypto API 的其余实现一样。

这进步了与其余 JavaScript 环境的互操作性,在每个环境都能够敌对运行!

10. 其余变动的中央

除了咱们介绍的所有杰出性能之外,Node.js 20 还包含一些其余不错的更新,以加强开发体验:

  • 更好的 TypeScript 反对:应用 TypeScript 编写更洁净、更高效的代码。
  • 改良的 TLS 1.3 反对:享受更弱小的加密来保障平安通信。
  • 更快的启动工夫:应用程序启动速度更快。
  • 无效的错误处理:优雅地处理错误,确保应用程序安稳运行。
  • 改良的调试体验:轻松解决那些厌恶的谬误。

总结

这就是 Node.js 20 带来的令人大开眼界的翻新点的介绍,如果各位想获取更多的详细信息,请拜访 Node.js 20 官网。

扩大链接:

如何在前端零碎中应用甘特图

窗口函数大揭秘!轻松计算数据累计占比,玩转数据分析的绝佳利器

探秘挪动端 BI:倒退历程与利用前景解析

正文完
 0