gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

站長資訊網
最全最豐富的資訊網站

Node.js 19正式發布,聊聊它的 6 大特性!

Node 19已正式發布,下面本篇文章就來帶大家詳解了解一下Node.js 19的 6 大特性,希望對大家有所幫助!

Node.js 19正式發布,聊聊它的 6 大特性!

node.js極速入門課程:進入學習

通譯自:6 Major Features of Node.js 19. Details of Node.js 19 new features… | by Jennifer Fu | Oct, 2022 | Better Programming


Node.js 14 將在 2023 年 4 月結束更新維護,Node.js 16 (LTS) 預計將在 2023 年 9 月結束更新維護。

而Node 19 在 2022-10-18 發布?!鞠嚓P教程推薦:nodejs視頻教程】

我們知道 Node.js 版本分兩種:LTS 和 Current

Node.js 19正式發布,聊聊它的 6 大特性!

其中,Current 版本通常每 6 個月發布一次。

每年 4 月份發布新的偶數版本;

每年 10 月份發布新的奇數版本;

在剛過去的 10 月,發布的 V19.0.1 成為最新的 “Current” 嘗鮮版,它一共帶來 6 大特性。

1. HTTP(S)/1.1 KeepAlive 默認為 true

Node.js v19 設置 keepAlive 默認值為 true,這意味著所有出站的 HTTP(s) 連接都將使用 HTTP 1.1 keepAlive,默認時間為 5S;

代碼測試:

const http = require('node:http'); console.log(http.globalAgent); const https = require('node:https'); console.log(https.globalAgent);
登錄后復制

我們可以對比看看 v16 和 v19 的 node server Agent 配置差異:

  • V16

% nvm use 16 Now using node v16.0.0 (npm v7.10.0) % node server Agent {   _events: [Object: null prototype] {     free: [Function (anonymous)],     newListener: [Function: maybeEnableKeylog]   },   _eventsCount: 2,   _maxListeners: undefined,   defaultPort: 80,   protocol: 'http:',   options: [Object: null prototype] { path: null },   requests: [Object: null prototype] {},   sockets: [Object: null prototype] {},   freeSockets: [Object: null prototype] {},   keepAliveMsecs: 1000,   keepAlive : false,   maxSockets: Infinity,   maxFreeSockets: 256,   scheduling: 'lifo',   maxTotalSockets: Infinity,   totalSocketCount: 0,   [Symbol(kCapture)]: false } Agent {   _events: [Object: null prototype] {     free: [Function (anonymous)],     newListener: [Function: maybeEnableKeylog]   },   _eventsCount: 2,   _maxListeners: undefined,   defaultPort: 443,   protocol: 'https:',   options: [Object: null prototype] { path: null },   requests: [Object: null prototype] {},   sockets: [Object: null prototype] {},   freeSockets: [Object: null prototype] {},   keepAliveMsecs: 1000,   keepAlive: false,   maxSockets: Infinity,   maxFreeSockets: 256,   scheduling: 'lifo',   maxTotalSockets: Infinity,   totalSocketCount: 0,   maxCachedSessions: 100,   _sessionCache: { map: {}, list: [] },   [Symbol(kCapture)]: false }
登錄后復制

第 18、40 行,keepAlive 默認設置為 false;

  • V19

% nvm use 19 Now using node v19.0.0 (npm v8.19.2) % node server Agent {   _events: [Object: null prototype] {     free: [Function (anonymous)],     newListener: [Function: maybeEnableKeylog]   },   _eventsCount: 2,   _maxListeners: undefined,   defaultPort: 80,   protocol: 'http:',   options: [Object: null prototype] {     keepAlive: true,     scheduling: 'lifo',     timeout: 5000,     noDelay: true,     path: null   },   requests: [Object: null prototype] {},   sockets: [Object: null prototype] {},   freeSockets: [Object: null prototype] {},   keepAliveMsecs: 1000,   keepAlive: true,   maxSockets: Infinity,   maxFreeSockets: 256,   scheduling: 'lifo',   maxTotalSockets: Infinity,   totalSocketCount: 0,   [Symbol(kCapture)]: false } Agent {   _events: [Object: null prototype] {     free: [Function (anonymous)],     newListener: [Function: maybeEnableKeylog]   },   _eventsCount: 2,   _maxListeners: undefined,   defaultPort: 443,   protocol: 'https:',   options: [Object: null prototype] {     keepAlive: true,     scheduling: 'lifo',     timeout: 5000,     noDelay: true,     path: null   },   requests: [Object: null prototype] {},   sockets: [Object: null prototype] {},   freeSockets: [Object: null prototype] {},   keepAliveMsecs: 1000,   keepAlive: true,   maxSockets: Infinity,   maxFreeSockets: 256,   scheduling: 'lifo',   maxTotalSockets: Infinity,   totalSocketCount: 0,   maxCachedSessions: 100,   _sessionCache: { map: {}, list: [] },   [Symbol(kCapture)]: false }
登錄后復制

第 14、16、42、44 行設置 keepAlive 默認值及時間;

啟用 keepAlive 能使連接重用,提高網絡的吞吐量。

另外,服務器將在調用 close() 自動斷開空閑的客戶端,內部依靠 http(s).Server.close API 實現;

這些修改,進一步優化了體驗和性能。

2. 穩定的 WebCrypto API

WebCrypto API 是一個使用密碼學構建的系統接口,在 node.js v19 趨于穩定(除 Ed25519、Ed448、X25519、X448 外)。

我們可以通過調用 globalThis.cryptorequire('node:crypto').webcrypto 來訪問,下面以 subtle 加密函數為例;

const { subtle } = globalThis.crypto;  (async function() {    const key = await subtle.generateKey({     name: 'HMAC',     hash: 'SHA-256',     length: 256   }, true, ['sign', 'verify']);    console.log('key =', key);    const enc = new TextEncoder();   const message = enc.encode('I love cupcakes');    console.log('message =', message);    const digest = await subtle.sign({     name: 'HMAC'   }, key, message);    console.log('digest =', digest);  })();
登錄后復制

首先生成 HMAC 密鑰,生成的密鑰可同時用于驗證消息數據完整性和真實性;

然后,對字符串 I love cupcakes 加密;

最后創建 消息摘要,它是一種加密散列函數;

在控制臺顯示:key 、message 、digest 信息

% node server key = CryptoKey {   type: 'secret',   extractable: true,   algorithm: { name: 'HMAC', length: 256, hash: [Object] },   usages: [ 'sign', 'verify' ] } message = Uint8Array(15) [   73, 32, 108, 111, 118,  101, 32,  99, 117, 112,   99, 97, 107, 101, 115] digest = ArrayBuffer {   [Uint8Contents]: <30 01 7a 5c d9 e2 82 55 6b 55 90 4f 1d de 36 d7 89 dd fb fb 1a 9e a0 cc 5d d8 49 13 38 2f d1 bc>,   byteLength: 32 }
登錄后復制

3. 自定義 ESM resolution 調整

Node.js 已經刪除 --experimental-specifier-resolution ,其功能現在可以通過自定義加載器實現。

可以在這個庫中測試:nodejs/loaders-test: Examples demonstrating the Node.js ECMAScript Modules Loaders API

git clone https://github.com/nodejs/loaders-test.git  % cd loaders-test/commonjs-extension-resolution-loader  % yarn install
登錄后復制

比如 loaders-test/commonjs-extension-resolution-loader/test/basic-fixtures/index.js 文件:

import { version } from 'process';  import { valueInFile } from './file'; import { valueInFolderIndex } from './folder';  console.log(valueInFile); console.log(valueInFolderIndex);
登錄后復制

./file 如果沒有自定義加載器,不會去查找文件的擴展名,比如 ./file.js./file.mjs

設置自定義加載器后,則可解決上述問題:

import { isBuiltin } from 'node:module'; import { dirname } from 'node:path'; import { cwd } from 'node:process'; import { fileURLToPath, pathToFileURL } from 'node:url'; import { promisify } from 'node:util';  import resolveCallback from 'resolve/async.js';  const resolveAsync = promisify(resolveCallback);  const baseURL = pathToFileURL(cwd() + '/').href;   export async function resolve(specifier, context, next) {   const { parentURL = baseURL } = context;    if (isBuiltin(specifier)) {     return next(specifier, context);   }    // `resolveAsync` works with paths, not URLs   if (specifier.startsWith('file://')) {     specifier = fileURLToPath(specifier);   }   const parentPath = fileURLToPath(parentURL);    let url;   try {     const resolution = await resolveAsync(specifier, {       basedir: dirname(parentPath),       // For whatever reason, --experimental-specifier-resolution=node doesn't search for .mjs extensions       // but it does search for index.mjs files within directories       extensions: ['.js', '.json', '.node', '.mjs'],     });     url = pathToFileURL(resolution).href;   } catch (error) {     if (error.code === 'MODULE_NOT_FOUND') {       // Match Node's error code       error.code = 'ERR_MODULE_NOT_FOUND';     }     throw error;   }    return next(url, context); }
登錄后復制

測試命令:

% node --loader=./loader.js test/basic-fixtures/index   (node:56149) ExperimentalWarning: Custom ESM Loaders is an experimental feature. This feature could change at any time (Use `node --trace-warnings ...` to show where the warning was created) hello from file.js
登錄后復制

將不會再報錯,正常運行。

4. 移除對 DTrace/SystemTap/ETW 支持

在 Node.js v19中,移除了對 DTrace/SystemTap/ETW 的支持,主要是因為資源的優先級問題。

數據表明很少人用到 DTrace、SystemTap 或 ETW,維護它們沒有多大的意義。

如果你想恢復使用,可提 issues => github.com/nodejs/node…

5. 升級 V8 引擎至 10.7

Node.js v19 將 V8 JavaScript 引擎更新至 V8 10.7,其中包含一個新函數 Intl.NumberFormat,用于格式化敏感數字。

Intl.NumberFormat(locales, options)
登錄后復制

對于不同的語言,傳入不同的 locales:

const number = 123456.789;  console.log(new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'EUR' }).format(number)); console.log(new Intl.NumberFormat('ja-JP', { style: 'currency', currency: 'JPY' }).format(number)); console.log(new Intl.NumberFormat('ar-SA', { style: 'currency', currency: 'EGP' }).format(number)); console.log(new Intl.NumberFormat('zh-CN', { style: 'currency', currency: 'CNY' }).format(number));
登錄后復制

6. 試驗 Node watch 模式

運行時增加了 node –watch 選項。

在 "watch" 模式下運行,當導入的文件被改變時,會重新啟動進程。

比如:

const express = require("express"); const path = require("path"); const app = express(); app.use(express.static(path.join(__dirname, "../build")));  app.listen(8080, () =>   console.log("Express server is running on localhost:8080") );
登錄后復制

% node --watch server (node:67643) ExperimentalWarning: Watch mode is an experimental feature. This feature could change at any time (Use `node --trace-warnings ...` to show where the warning was created) Express server is running on localhost:8080
登錄后復制


Node.js 14 將在 2023 年 4 月結束更新維護,Node.js 16 (LTS) 預計將在 2023 年 9 月結束更新維護。

建議大家開始計劃將版本按需升級到 Node.js 16(LTS)或 Node.js 18(LTS)。

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
av电影一区二区三区| 久久精品国产精品亚洲色婷婷| 日本黄色福利视频| caoporm在线视频| 久久精品一二三四| 午夜剧场在线免费观看| 亚洲污视频在线观看| 邪恶网站在线观看| 超碰免费在线公开| 三级在线免费观看| 免费在线激情视频| the porn av| 成人免费看片视频在线观看| 400部精品国偷自产在线观看| 色乱码一区二区三区熟女| 欧美日韩午夜爽爽| 91成人在线观看喷潮教学| 黄色aaa级片| 中国一级黄色录像| 国产成人久久婷婷精品流白浆| 91av俱乐部| 国产精品无码乱伦| 国产精品一区二区免费在线观看| 久久国产亚洲精品无码| 欧美wwwwwww| 欧美一级视频在线播放| www日韩在线观看| 中文字幕乱码免费| 999精品网站| 激情视频综合网| 欧美成年人视频在线观看| 久国产精品视频| 伊人再见免费在线观看高清版| 免费观看国产视频在线| www.av91| 欧美丰满熟妇xxxxx| 中文字幕国产免费| 欧美性受xxxx黑人猛交88| 欧美一级中文字幕| 91亚洲精品国产| 99亚洲精品视频| 91性高潮久久久久久久| 三上悠亚在线一区二区| 亚洲精品中文字幕无码蜜桃| 成人av一级片| 黑森林福利视频导航| 成年人黄色片视频| 日本男人操女人| 男人搞女人网站| 超碰97人人射妻| 一道本在线免费视频| 日本黄色福利视频| 日韩不卡一二区| 中文字幕乱码免费| 欧美日韩福利在线| www.日本三级| 国产中文字幕免费观看| 久久精品国产精品亚洲色婷婷| 日韩人妻精品无码一区二区三区| 欧美精品自拍视频| 污片在线免费看| 午夜影院免费版| 欧洲精品一区二区三区久久| 无码aⅴ精品一区二区三区浪潮| 日本xxxxxxx免费视频| 国产高清999| 欧美一级免费播放| jizz欧美性11| 国产精品va无码一区二区| www.精品在线| 欧美黄网站在线观看| 国产人妻人伦精品| 欧美亚洲视频一区| 亚洲 国产 图片| 一本一道久久a久久综合蜜桃| 欧美少妇性生活视频| www精品久久| 日av中文字幕| 日韩欧美在线播放视频| 分分操这里只有精品| 国产在线视频综合| www.69av| 成人小视频在线观看免费| 99精品视频国产| 麻豆中文字幕在线观看| 亚洲一二三av| 51自拍视频在线观看| 超碰91在线播放| 中文字幕免费高| 超薄肉色丝袜足j调教99| 日韩不卡一二区| 999久久欧美人妻一区二区| 久久精品一卡二卡| 九九久久九九久久| 国产亚洲黄色片| 欧美 激情 在线| 日本中文字幕二区| 日韩欧美猛交xxxxx无码| 国产玉足脚交久久欧美| 污片在线免费看| 成人在线播放网址| 男女无套免费视频网站动漫| 四季av一区二区三区| 日韩网址在线观看| 公共露出暴露狂另类av| 色婷婷成人在线| av天堂永久资源网| 日韩亚洲欧美一区二区| 蜜桃福利午夜精品一区| 女人高潮一级片| 北条麻妃69av| 欧美一区二区中文字幕| 91嫩草国产丨精品入口麻豆| 色综合五月婷婷| 免费观看亚洲视频| 亚洲国产精品久久久久爰色欲| 男女无套免费视频网站动漫| 无套内谢丰满少妇中文字幕| 国产在线播放观看| 中文字幕第88页| 成人区一区二区| 91国产精品视频在线观看| 先锋影音男人资源| 日韩av在线综合| 国产精品久久久影院| 人妻丰满熟妇av无码区app| 一本—道久久a久久精品蜜桃| 色综合久久久久无码专区| 日本中文字幕影院| 成年人视频观看| 丰满女人性猛交| 国产又黄又猛又粗又爽的视频| 日本福利视频在线观看| 欧美一级特黄a| 国产免费黄色一级片| 日韩av在线中文| 国产极品尤物在线| 欧美a级黄色大片| 一道本视频在线观看| 国产3p露脸普通话对白| 91蝌蚪视频在线| 亚洲精品高清无码视频| 97在线免费视频观看| 91精品999| 久热免费在线观看| 中文字幕av不卡在线| 亚洲一级免费观看| 精品久久久无码人妻字幂| 激情伊人五月天| www.超碰97.com| 国模无码视频一区二区三区| 小泽玛利亚视频在线观看| 99999精品| 乱子伦视频在线看| 2021狠狠干| 国产一级不卡毛片| 2021狠狠干| 色综合色综合色综合色综合| 最新中文字幕久久| 免费男同深夜夜行网站| 99视频精品全部免费看| 国产精品区在线| 日韩毛片在线免费看| 国产97在线 | 亚洲| 亚洲色图欧美自拍| 免费成人深夜夜行网站视频| 国产黑丝在线视频| 日韩av片专区| av中文字幕网址| 日本a在线天堂| 国产美女主播在线播放| 日韩欧美精品免费| 日本一区二区三区四区五区六区| 色免费在线视频| 男人搞女人网站| 污视频在线观看免费网站| 无码 制服 丝袜 国产 另类| 国产精品igao网网址不卡| 日本精品一区在线观看| 少妇一级淫免费放| 茄子视频成人免费观看| 国产不卡一区二区视频| 国产乱子伦精品无码专区| 色偷偷中文字幕| 久久久福利影院| 成年人网站av| av动漫免费观看| 99久久99久久精品| 久久亚洲国产成人精品无码区| 日韩一级特黄毛片| 日本手机在线视频| 欧美日韩亚洲一| 亚洲精品一二三四五区| www.亚洲高清| 992kp免费看片| 亚洲中文字幕无码专区| 男女裸体影院高潮| 国产一区二区在线视频播放| 久章草在线视频| 九九热视频免费|