久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合

站長(zhǎng)資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

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

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

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

node.js極速入門(mén)課程:進(jìn)入學(xué)習(xí)

通譯自: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 月結(jié)束更新維護(hù),Node.js 16 (LTS) 預(yù)計(jì)將在 2023 年 9 月結(jié)束更新維護(hù)。

而Node 19 在 2022-10-18 發(fā)布。【相關(guān)教程推薦:nodejs視頻教程】

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

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

其中,Current 版本通常每 6 個(gè)月發(fā)布一次。

每年 4 月份發(fā)布新的偶數(shù)版本;

每年 10 月份發(fā)布新的奇數(shù)版本;

在剛過(guò)去的 10 月,發(fā)布的 V19.0.1 成為最新的 “Current” 嘗鮮版,它一共帶來(lái) 6 大特性。

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

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

代碼測(cè)試:

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

我們可以對(duì)比看看 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 }
登錄后復(fù)制

第 18、40 行,keepAlive 默認(rèn)設(shè)置為 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 }
登錄后復(fù)制

第 14、16、42、44 行設(shè)置 keepAlive 默認(rèn)值及時(shí)間;

啟用 keepAlive 能使連接重用,提高網(wǎng)絡(luò)的吞吐量。

另外,服務(wù)器將在調(diào)用 close() 自動(dòng)斷開(kāi)空閑的客戶端,內(nèi)部依靠 http(s).Server.close API 實(shí)現(xiàn);

這些修改,進(jìn)一步優(yōu)化了體驗(yàn)和性能。

2. 穩(wěn)定的 WebCrypto API

WebCrypto API 是一個(gè)使用密碼學(xué)構(gòu)建的系統(tǒng)接口,在 node.js v19 趨于穩(wěn)定(除 Ed25519、Ed448、X25519、X448 外)。

我們可以通過(guò)調(diào)用 globalThis.cryptorequire('node:crypto').webcrypto 來(lái)訪問(wèn),下面以 subtle 加密函數(shù)為例;

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);  })();
登錄后復(fù)制

首先生成 HMAC 密鑰,生成的密鑰可同時(shí)用于驗(yàn)證消息數(shù)據(jù)完整性和真實(shí)性;

然后,對(duì)字符串 I love cupcakes 加密;

最后創(chuàng)建 消息摘要,它是一種加密散列函數(shù);

在控制臺(tái)顯示: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 }
登錄后復(fù)制

3. 自定義 ESM resolution 調(diào)整

Node.js 已經(jīng)刪除 --experimental-specifier-resolution ,其功能現(xiàn)在可以通過(guò)自定義加載器實(shí)現(xiàn)。

可以在這個(gè)庫(kù)中測(cè)試: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
登錄后復(fù)制

比如 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);
登錄后復(fù)制

./file 如果沒(méi)有自定義加載器,不會(huì)去查找文件的擴(kuò)展名,比如 ./file.js./file.mjs

設(shè)置自定義加載器后,則可解決上述問(wèn)題:

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); }
登錄后復(fù)制

測(cè)試命令:

% 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
登錄后復(fù)制

將不會(huì)再報(bào)錯(cuò),正常運(yùn)行。

4. 移除對(duì) DTrace/SystemTap/ETW 支持

在 Node.js v19中,移除了對(duì) DTrace/SystemTap/ETW 的支持,主要是因?yàn)橘Y源的優(yōu)先級(jí)問(wèn)題。

數(shù)據(jù)表明很少人用到 DTrace、SystemTap 或 ETW,維護(hù)它們沒(méi)有多大的意義。

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

5. 升級(jí) V8 引擎至 10.7

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

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

對(duì)于不同的語(yǔ)言,傳入不同的 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));
登錄后復(fù)制

6. 試驗(yàn) Node watch 模式

運(yùn)行時(shí)增加了 node –watch 選項(xiàng)。

在 "watch" 模式下運(yùn)行,當(dāng)導(dǎo)入的文件被改變時(shí),會(huì)重新啟動(dòng)進(jìn)程。

比如:

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") );
登錄后復(fù)制

% 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
登錄后復(fù)制


Node.js 14 將在 2023 年 4 月結(jié)束更新維護(hù),Node.js 16 (LTS) 預(yù)計(jì)將在 2023 年 9 月結(jié)束更新維護(hù)。

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

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
国产亚洲第一伦理第一区| 香蕉久久久久久| 国产精品普通话对白| 日韩高清电影一区| 亚洲不卡系列| 中文字幕成人| 亚洲国产福利| 亚州av一区| 日韩三区免费| 国产日韩视频| 中文一区二区| 成人一区不卡| 日韩福利视频导航| 午夜视频精品| a天堂资源在线| 日韩av中文字幕一区二区| 久久精品99久久无色码中文字幕| 国产日韩一区二区三区在线播放| 欧美日韩四区| 97国产精品| 91精品国产一区二区在线观看| 国产综合精品| 狠狠久久伊人中文字幕| 日韩精品免费视频人成 | 日韩精品久久久久久久电影99爱| 日本久久一区| 欧美日韩日本国产亚洲在线| 91一区二区三区四区| 国产亚洲欧美日韩在线观看一区二区| 黄色亚洲精品| 啪啪国产精品| 国产96在线亚洲| 国产精品免费99久久久| 亚洲香蕉久久| 亚洲精品va| 国产高潮在线| 精品久久在线| 欧美黄页在线免费观看| 日韩av一区二区三区四区| 丝袜国产日韩另类美女| 精品一区毛片| 日韩不卡免费高清视频| 国产一区二区三区黄网站| 蜜臀av免费一区二区三区| 日韩中文字幕高清在线观看| 久久狠狠久久| 亚洲开心激情| 在线成人直播| 国产在线欧美| 日韩1区在线| 麻豆精品99| 国产精品亚洲人成在99www | 国产不卡av一区二区| 国产精品777777在线播放 | 成人久久久久| 日韩.com| 色婷婷综合网| 国产精品99一区二区三| 牛牛精品成人免费视频| 国产亚洲电影| 久久国内精品视频| 日本aⅴ亚洲精品中文乱码| 亚洲精品精选| 亚欧洲精品视频在线观看| 玖玖精品视频| 国产精品丝袜xxxxxxx| 在线亚洲观看| 日韩专区在线视频| 水野朝阳av一区二区三区| 亚洲永久字幕| 久久成人一区| 国产精品日本| 国产精选在线| 欧美丰满日韩| 福利一区二区免费视频| 国产成人精品亚洲线观看| 欧美激情国产在线| 日韩欧美1区| 91精品亚洲| 欧美日韩精品一本二本三本| 亚洲一区欧美二区| 亚洲字幕久久| 7777精品| 免费亚洲一区| 在线天堂资源www在线污| 亚洲精品.com| 自拍日韩欧美| 五月激激激综合网色播| 欧美久久亚洲| 国产精品久久久久av蜜臀| 欧美精品成人| 电影91久久久| 九色精品91| 亚洲精品乱码日韩| 国产伦乱精品| 福利一区和二区| 成人av二区| 亚洲精品在线二区| 国产精品一区高清| 国产精品成人a在线观看| 亚洲高清不卡| 亚洲性视频在线| 国产精品xxx| 免费污视频在线一区| 美女网站一区| 亚洲精品伊人| 麻豆传媒一区二区三区| 欧美羞羞视频| 只有精品亚洲| 麻豆久久久久久久| 久久中文字幕av| 亚洲毛片在线| 久久亚洲黄色| 免费av一区| 91在线成人| av高清不卡| 美国三级日本三级久久99 | 91精品国产调教在线观看| 国产精品免费看| 久久国产麻豆精品| 日韩欧美三级| 亚洲小说春色综合另类电影| 久久精品国产在热久久| 香蕉久久99| 日韩欧美三区| 日韩国产在线| 亚洲精品日韩久久| 国产伦久视频在线观看| 欧美美女一区| 日韩中文字幕一区二区高清99| 久久精品三级| 性欧美长视频| 欧美aⅴ一区二区三区视频| 欧美福利一区| 麻豆精品久久久| 一本色道久久精品| 精品美女在线视频| 亚洲精品字幕| 免费看av不卡| 日韩精品亚洲专区| 激情丁香综合| 国产欧美视频在线| 一本一道久久a久久精品蜜桃| 国产精品亚洲四区在线观看| 99热精品久久| 国产精品中文| 亚洲欧美视频| 日本蜜桃在线观看视频| 日韩激情一二三区| 久久国产中文字幕| 国产精品三级| 免费人成网站在线观看欧美高清| 国产一区二区三区四区五区传媒| 日韩三级精品| 欧美国产中文高清| 六月天综合网| 中文字幕人成乱码在线观看| 日韩高清一区| 在线国产一区二区| 精品国产成人| 91精品国产自产观看在线| 在线视频免费在线观看一区二区| 日韩a一区二区| 欧美视频二区| 爽好多水快深点欧美视频| 色在线视频观看| 国产精品亚洲片在线播放| 一区二区三区四区在线观看国产日韩| 午夜影院一区| 久久伊人国产| 欧美自拍一区| 一区二区高清| 夜久久久久久| 久久中文字幕二区| 国产91在线精品| 国产精品2区| 日本aⅴ免费视频一区二区三区| 亚洲国产一区二区三区在线播放 | 今天的高清视频免费播放成人| 老牛国内精品亚洲成av人片 | 日韩欧美看国产| 精品网站999| 国产一卡不卡| 日本成人在线视频网站| 蜜桃tv一区二区三区| 美女网站视频一区| 国产精品麻豆久久| 精品国产欧美日韩一区二区三区| 国产欧美一区| 国产亚洲电影| 国产日韩中文在线中文字幕| 亚洲不卡视频| 国产日韩综合| 欧美日韩国产高清| 在线一区免费| 亚洲作爱视频| 六月婷婷一区| 美女91精品| 视频一区视频二区在线观看| 国产一在线精品一区在线观看|