node-js-la-gi-co-gi-moi-trong-node-js10-dizibrand.com

20 mẹo và kỹ thuật để giúp bạn thành thạo phiên bản Node.js mới nhất hiện nay.

Node.js mạnh dạn kích hoạt JavaScript để đến những nơi mà người tạo ra nó không bao giờ có ý định sử dụng ngôn ngữ này. Nhiều tính năng được yêu thích trong các bản sửa đổi ECMAScript mới bắt đầu khi các tính năng được thêm vào Node.js – thật đáng buồn, các API được tiêu chuẩn hóa thường không tương thích với các nhóm được nhà phát triển Node.js nghĩ ra.

Do đó, một trong những chủ đề định kỳ của thế giới Node.js xoay quanh việc dung hòa sự khác biệt giữa ‘phát triển web’ và ‘phát triển nút’. Ví dụ: hệ thống con mô-đun của Node.js không hoạt động theo tiêu chuẩn ECMAScript. Node.js 10 cập nhật các phiên bản của các thành phần cốt lõi khác nhau được sử dụng trong sản phẩm, do đó cho phép các nhà phát triển khai thác các cải tiến về tốc độ và bảo mật.

Hơn nữa, làm việc trên HTTP / 2 tăng tốc độ phân phối nội dung trong các tình huống bị hạn chế về băng thông và / hoặc độ trễ. Một thay đổi trong giao diện gốc sẽ đơn giản hóa cuộc sống của các nhà phát triển plugin Node.js, dẫn đến một hệ sinh thái mở rộng sôi động hơn. Bản chất kỹ thuật rất chi tiết của các thay đổi làm cho việc cung cấp các ví dụ riêng lẻ trở nên khó khăn. Tuy nhiên, trong bài đăng này, chúng tôi đã làm tròn 20 thông tin ngắn sẽ giúp bạn nắm bắt được với Node.js 10.

Nếu bạn cảm thấy như luôn luôn đứng đầu trong các phát triển mới nhất trong Node.js, hãy đến trang GitHub này . Nó cung cấp một mức độ chi tiết mật thiết về những thay đổi trong sản phẩm.

1. Cập nhật môi trường của bạn

Node.js có thể được biên dịch bằng tay. Tuy nhiên, hầu hết các bản phân phối Linux đều có thể chạy trình cài đặt tự động. Mã ở đây cho thấy quá trình cài đặt trên Ubuntu 14.04 LTS. Nếu hệ điều hành của bạn hiển thị trong Hình 1, hãy tìm một quy trình tương tự ở đây .

tamhan@TAMHAN14:~$ sudo apt-get remove nodejs

tamhan@TAMHAN14:~$ curl -sL https://deb.

nodesource.com/setup_10.x | sudo -E bash –

tamhan@TAMHAN14:~$ sudo apt-get install -y

nodejs

2. Phát hiện ra lỗi

Các nhà phát triển đã thực hiện so sánh chuỗi để tìm lỗi kể từ Node.js 1.0. Tuy nhiên, phiên bản 9.0 bắt đầu chuyển sang các hằng số dễ xử lý hơn. Mã đi kèm với bước này miễn nhiễm với lỗi chính tả và chống lại các nỗ lực ‘để cải thiện khả năng sử dụng bằng cách cải tổ các thông báo lỗi’.

try {

// foo

} catch (err) {

if (err.code === ‘ERR_ASSERTION’) { . . . }

else { . . . }

}

3. Hiểu chúng

Xử lý các lập trình viên máy tính bực bội với ý tưởng sử dụng các chuỗi để truyền các trạng thái lỗi – Node.js 10 không phá vỡ truyền thống này. Thay vào đó, khung xác định một vài chục chuỗi, sẽ đóng vai trò là ‘hằng số ma thuật’ và có thể được trả về trong trường mã của đối tượng ‘Lỗi’.

4. Viết và mô tả chúng đúng cách

Việc giới thiệu mã lỗi không làm mất thông báo lỗi truyền thống. Mã dựa trên sự hiện diện của trường ‘.message’ tiếp tục hoạt động như đã làm – nếu bạn cần trình bày một thông điệp mà người dùng cuối có thể hiểu, bạn có thể tin tưởng vào trường như bạn đã làm trước đây.

const err = new Error(‘The message’);

console.error(err.message);

5. Tốc độ tăng lên đi kèm với bản cập nhật V8

Node.js luôn sử dụng thời gian chạy V8 để thực thi JavaScript. Như với hầu hết các hợp tác dự án, Node.js thường tụt hậu so với tiến độ của V8. Node.js 10 dựa trên phiên bản 6.6 của V8, mang lại những cải tiến đáng kể về hiệu năng xử lý bộ đệm và bộ đệm.

6. Headless try-catch!

Các khối try-Catch là nguyên nhân của các lập trình viên Java: việc tìm kiếm một đánh dấu bằng một nhận xét hướng dẫn tắt trình biên dịch là phổ biến. V8 6.6 giảm gánh nặng cho các lần thử không mong muốn bằng cách cho phép các nhà phát triển bỏ qua đối tượng ngoại lệ khỏi khối bắt .

try {

 doSomethingThatMightThrow();

} catch {

 handleException(); }

7. Cải thiện chi tiết trong phản ánh chức năng

Một chi tiết ít được biết đến của các hàm liên quan đến JavaScript: chúng cũng có thể được coi là các đối tượng. Cho đến nay, phương thức toString () chỉ trả về tên phương thức. Trong Node.js 10, chương trình trả về toàn bộ dòng đầu tiên – như có thể thấy trong hình, giá trị trả về thậm chí còn mở rộng cho tất cả các loại nhận xét

function /* demo */ sayHurz()

{

console.log(“Hurz!”);

}

console.log(sayHurz.toString());

8. Khắc phục lỗi cập nhật

Nếu máy trạm của bạn không thể chạy phiên bản mới của Node.js, hãy kiểm tra cấu hình trình quản lý gói. Bạn thực sự phải xóa hai tệp được đề cập trong đoạn mã sau trước khi hoạt động bình thường của chương trình có thể tiếp tục:

tamhan@TAMHAN14:/etc/apt/sources.list.d$ sudo

rm nodesource.list

tamhan@TAMHAN14:/etc/apt/sources.list.d$ sudo

rm nodesource.list.save

9. Mô-đun ECMAScript

Mặc dù Node.js ảnh hưởng đến ý tưởng của các mô-đun JavaScript, nhưng việc triển khai ECMAScript không tương thích với Common.js. Mặc dù cờ –experimental-mô-đun đã xuất hiện khá lâu, Node.js 10 mang đến một vài tính năng mới nhằm để các mô-đun dựa trên ECMAScript hoạt động trong môi trường Node.

tamhan@TAMHAN14:~/workspace$ node

–experimental-modules index

10. Hiểu kiến trúc mô đun bên trong

Trong khi JavaScript có thể làm rất nhiều thứ, một số công việc yêu cầu sử dụng C ++. Cho đến nay, các nhà phát triển tìm kiếm sự tích hợp chặt chẽ hơn thường đặt niềm tin vào API V8 – dẫn đến việc viết lại plugin bất cứ khi nào phiên bản V8 được sử dụng trong Node.js được thay đổi.

11. Xem các cải tiến N-API

Rất may, N-API giải quyết vấn đề này bằng cách cung cấp một lớp trừu tượng mới. Mọi thay đổi được thực hiện đối với nền tảng và công cụ cơ bản không còn được tiếp xúc với các nhà phát triển làm việc trên các plugin, do đó giảm bớt gánh nặng bảo trì và, hy vọng, giúp việc nâng cấp Node.js mượt mà hơn.

12. Tìm hiểu về API

Theo như API C, API N rõ ràng là một trong những API được thiết kế tốt hơn. Như được trình bày chi tiết rõ ràng ở đây , API được trang bị các phương thức để xử lý việc tạo đối tượng, gọi lại và hơn thế nữa. Hơn nữa, tiêu đề chứa ‘khóa’ cho phép bạn vô hiệu hóa các tính năng không có trong các phiên bản cũ hơn của NAPI vì lý do tương thích.

#define NAPI_VERSION 3

#include

13. Sử dụng ChaCha20 và Poly1305

Mật mã luôn có tầm quan trọng đáng kể trên web. Node.js 10 cập nhật phiên bản cơ bản của OpenSSL lên 1.1.0, do đó cho phép các nhà phát triển sử dụng các thuật toán mã hóa mới, dự kiến sẽ mạnh mẽ hơn. Điều này đặc biệt hữu ích khi tìm cách triển khai các chương trình mã hóa kiểu AEAD.

14. Truy tìm mục tiêu

Node.js 10 phát ra một tập hợp các tham số theo dõi bổ sung, do đó cho phép các nhà phát triển không gặp vấn đề về hiệu suất. Các đối tượng theo dõi có thể được kích hoạt và vô hiệu hóa thêm theo ý muốn thông qua các chức năng được hiển thị trong đoạn trích đi kèm với bước này – độ chính xác hiện tại nằm trong tầm tay của mọi nhà phát triển.

const trace_events = require(‘trace_events’);

const t1 = trace_events.createTracing({

categories: [‘node’, ‘v8’]

});

const t2 = trace_events.createTracing({

categories: [‘node.perf’, ‘node’]

});

t1.enable();

t2.enable();

t2.disable();

15. Tìm hiểu thêm về truy tìm

Khi viết bài này, Node.js hỗ trợ tổng cộng tám loại dấu vết . Ngoài các sự kiện V8, nhà phát triển cũng có thể tự đăng ký bootstrap, async_hook và thông tin đồng bộ hóa hệ thống tệp tại dòng lệnh hoặc thông qua đối tượng theo dõi.

const trace_events = require(‘trace_events’);

const tracing = trace_events.createTracing({

categories: [‘node.perf’] });

tracing.enable();

16. HTTP / 2 hiện là bản chính thức

Mặc dù chỉ báo ổn định API trong tài liệu Node.js vẫn hiển thị hỗ trợ HTTP / 2 là thử nghiệm, API có thể được coi là ổn định.

const http2 = require(‘http2’);

const fs = require(‘fs’);

const server = http2.createSecureServer({

 key: fs.readFileSync(‘localhost-privkey.

pem’),

 cert: fs.readFileSync(‘localhost-cert.pem’)

});

server.on(‘error’, (err) => console.

error(err));

17. Hãy quan tâm việc mã hóa

Khi triển khai máy chủ Node.js sử dụng HTTP / 2, hãy nhớ rằng phiên bản giao thức không được mã hóa không được bất kỳ trình duyệt web nào hỗ trợ như thời điểm viết. Do đó, bạn nên chuẩn bị để đối phó với chi phí xử lý đáng kể khi truyền và nhận dữ liệu trong cấu hình proxyless.

server.on(‘stream’, (stream, headers) =>

{

 // stream is a Duplex

 stream.respond({

   ‘content-type’: ‘text/html’,

   ‘:status’: 200

 });

 stream.end(‘

Hello World

‘);

});

server.listen(8443);

18. API hệ thống tệp với những hứa hẹn

Hứa là tất cả các cơn thịnh nộ trong JavaScript. Cho đến nay, các nhà phát triển thường phải thực hiện mà không có API hệ thống tệp dựa trên lời hứa – một vấn đề đã được khắc phục trong Node.js 10. Mặc dù mô-đun fs / lời hứa vẫn đang thử nghiệm, nhưng nó đã cung cấp một giải pháp thay thế tốt cho ‘truyền thống’ truy cập hệ thống tập tin.

require(‘fs/promises’)

19. Nhiều công việc đã được thực hiện async

Node.js được phân luồng đơn theo mặc định. Các móc nối không đồng bộ cho phép mã theo dõi các tài nguyên được thực thi không đồng bộ một cách thoải mái hơn – trong khi API không ổn định, Node.js 10 cung cấp các cải tiến đáng kể so với các triển khai hầu như không hoạt động trong các phiên bản trước.

const async_hooks = require(‘async_hooks’);

const eid = async_hooks.executionAsyncId();

const tid = async_hooks.triggerAsyncId();

const asyncHook =  async_hooks.createHook

({

init, before, after, destroy, promiseResolve

});

20. NPM-Turbo

Mặc dù NPM thường được xem là một phần cấu thành của bản phân phối Node.js, nhưng nó thực sự là một sản phẩm độc lập. Các phiên bản hiện tại của Node.js 10 đi kèm với NPM 6 , giúp tăng tốc độ đáng kể khi cài đặt và triển khai các gói. Trên máy của nhà văn này, một số quy trình đã thấy tốc độ tăng gấp 10 lần.

Đánh giá bài viết này