Nền tảng Node.js vừa phát hành phiên bản đầu tiên của Node v16.0.0. Node.js duy trì nhiều phiên bản, bao gồm cả bản phát hành hiện tại cùng với bản phát hành hỗ trợ dài hạn (LTS). Bản phát hành v16 hiện tại sẽ trở thành bản phát hành LTS vào khoảng tháng 10 năm 2021. Đây là lịch phát hành bình thường của Node.

Apple đã phát hành một kiến trúc CPU mới vào tháng 11 năm ngoái dựa trên ARM64. Đây là những máy Mac sử dụng chip M1 của Apple. Mặc dù Node.js đã chạy trên các máy mới hơn này, nhưng nó đã hoạt động thông qua công nghệ Rosetta của Apple. Rosetta cho phép mã x86_64 chạy trong mô phỏng trên các chip mới hơn. Trong khi điều này là ổn định, nó không phải là lý tưởng.

Ảnh do gadgetmatch.com cung cấp

Bây giờ bạn có thể tải xuống bản phát hành này thông qua nền tảng Node dưới dạng tệp .pkg hoặc thông qua Trình quản lý phiên bản Node. Đây là bản phát hành đầu tiên với mã nhị phân Apple Silicon. trình cài đặt .pkg sẽ cài đặt một tệp nhị phân phổ biến sẽ chạy trên bộ xử lý Apple Silicon hoặc trên máy Mac của Intel.

Phiên bản V8, công cụ JavaScript cho Node.js, đã được nâng cấp lên phiên bản 9.0. Trước đó trong phiên bản Node 15, họ đã sử dụng V8 8.6.

Một phần của phiên bản v8 mới này bao gồm các khả năng biểu thức chính quy mới cho các chỉ số bắt đầu và kết thúc của một chuỗi được ghi lại. Điều này khả dụng khi bạn sử dụng cờ / d và truy cập thuộc tính mảng .indices.

Stable Timers Promises API

Stable Timers trước đó đã có sẵn trong Node v15 dưới trạng thái thử nghiệm. Bây giờ chúng được coi là một tính năng ổn định.

import { setTimeout } from 'timers/promises';

async function doSomething() {
  console.log('doSomething started!');
  await setTimeout(2000);
  console.log('Delayed Timers!');
}
doSomething();

Web Crypto API thử nghiệm

Web Crypto API là phiên bản mới hơn được định nghĩa rõ ràng hơn của thư viện Crypto dành cho JavaScript. Tất cả các phương thức Web Crypto mới đều có sẵn trên một giao diện tinh tế subtle. Nhiều trình duyệt đã sử dụng giao diện được gọi là Crypto mà không có đặc điểm kỹ thuật cụ thể. API Web Crypto thêm một tiêu chuẩn vào thư viện Crypto.

import { webcrypto } from 'crypto';
const { subtle } = webcrypto;

(async function() {

  const key = await subtle.generateKey({
    name: 'HMAC',
    hash: 'SHA-256',
    length: 256
  }, true, ['sign', 'verify']);

  const digest = await subtle.sign({
    name: 'HMAC'
  }, key, 'I love node.js');

  console.log(digest);
})();

Node-API version 8

Node API cung cấp một giao diện để viết các tiện ích bổ sung C ++ gốc dưới dạng mô-đun nút. Version 8 của Node-API thêm các phương thức gốc cho các phương thức sau:

AbortController API

API Web AbortController cung cấp một API toàn cầu có thể được sử dụng để hủy các API dựa trên đã hứa đã chọn. Người nghe sự kiện nên sử dụng tùy chọn {once: true} để đảm bảo rằng trình xử lý sự kiện bị xóa. Đây là một ví dụ về AbortController được sử dụng với trình nghe sự kiện;

const abortC = new AbortController();
abortC.signal.addEventListener('abort', () => {
    console.log('Just cancelled')
}, { once: true });
abortC.abort();
console.log(abortC.signal.aborted);

Thêm phương thức đệm 'atob' và 'btoa'

Các phương pháp này để chuyển đổi dữ liệu thành các chuỗi được mã hóa base64 và trở lại nơi được thêm vào để hỗ trợ các API nền tảng web kế thừa. Đây không phải là cách ưa thích và không nên được sử dụng trong mã mới.

Cách ưa thích để chuyển đổi dữ liệu thành chuỗi mã hóa base64 là sử dụng phương thức Buffer.from (data, 'base64') hoặc buf.toString ('base64') để chuyển đổi bộ đệm thành chuỗi 'base64'.

const str = 'Hello JavaScript Developer!';

const strBuf = Buffer.from(str, 'utf8');
console.log(strBuf);
// <Buffer 1d e9 65 a0 96 af 69 27 2b 8a 9b 43 7a f7 a5 a2 97 ab>

const base64Buf = Buffer.from(strBuf, 'base64');
const base64Str = base64Buf.toString('base64');
console.log(base64Str);
// SGVsbG8gSmF2YVNjcmlwdCBEZXZlbG9wZXIh

const bufFromBase64Str = Buffer.from(base64Str, 'base64');

const decodedStr = bufFromBase64Str.toString('utf-8');
console.log(decodedStr);
// Hello JavaScript Developer!
console.log(str === decodedStr);
// true

Các tính năng khác

  • npm v7.10.0
  • Source Maps v3
  • process.binding() has been deprecated

Kết luận

Nâng cấp Node.js thường là nâng cấp gia tăng. Khi hệ thống chạy V8 được nâng cấp với các tính năng mới, Node có những tính năng này với phiên bản V8 mới. Tôi đang mong đợi bản phát hành LTS vào tháng 10.

Xuất bản ban đầu tại https://fek.io.

Bài viết gốc tại đây

Techmaster vẫn tiếp tục tuyển sinh cho lớp NodeJS mới - dự kiến khai giảng trong tháng 7

Link khóa học: https://nodejs.techmaster.vn/

Liên hệ, tư vấn: Ms Mẫn - 0963023185 (zalo)