6

Bạn đã update Nodejs 12 LTS cho project của mình chưa?

Ngày 21/10 Nodejs  đã đánh dấu phiên bản 12.13.0 thành  Long Term Support (LTS) với mã phiên bản là Erbium và sẽ được active tới tháng 10/2020 trước khi nhường lại tags LTS cho phiên bản Node mới hơn, sau đó sẽ được maintaince tới cuối tháng 04/2022.

node release lifecycle (https://nodejs.org/en/about/releases/)node release lifecycle (https://nodejs.org/en/about/releases/)

V8 Engine update lên v7.4

V8 Engine là linh hồn của Nodejs, việc V8 cải tiến hiệu năng của V8 như cũng đồng nghĩa với việc hiệu năng ứng dụng build trên V8 cũng sẽ được cải thiện. 

Những tính năng được thêm mới/cải thiện trong phiên bản v7.4:

ES6 module support

Nếu viết ES6 nhiều chắc các bạn đã quen với syntax import/export, với những phiên bản cũ nếu sử dụng được thì cần phải có một compiler (babel) để parse ES6.

Với Node12 bạn có thể trực tiếp sử dụng import/export:

Hiện tại thì chức năng này đang được thí nghiệm, nếu các bạn muốn sử dụng thì khi start node lên thì thêm tham số --experimental-modules

Enable ES module support (https://nodejs.org/api/esm.html#esm_enabling)

Private Class Field

 Bạn có thể tạo một biến private trong class với Nodejs 12.

private class fieldsprivate class fields

Instance của một class giờ đây không thể lấy giá trị của một biến private bằng cách truy suất trực tiếp đến field đó nữa mà phải thông qua một phương thức get

Improve startup performance

Nodejs 12 sẽ generate code và cache lại cho những libraries build-in trước khi build project. Main thread có thể sử dụng đoạn code đã được cache lại mà không cần build lại, cải thiện 30% tốc tộ start project.

Node.js 12 feature brings an updated experimental version of support for ES6 modules. It will generate the code cache for built-in libraries before build time and embed it as a binary. The main thread is able to use this code cache and gives a 30% speedup in startup time for the main thread. (https://www.angularminds.com/blog/article/node-12-what-are-the-new-improvements-and-features.html)

TLS 1.3 and Security

Node support TLS 1.3, tăng tính bảo mật và giảm độ trễ.  TLS 1.0 và 1.1 mặc định sẽ bị disable với Node 12.

Khi implement TLS 1.3 sẽ tăng tính bảo mật của ứng dụng, giảm thời gian khi thực hiện HTTPS handshake. 

Quản lý bộ nhớ Ram tốt hơn

Ở những phiên bản trước, bộ nhớ heap v8 là 700MB với  thống 32-bit và 1400MB với hệ thống 64-bit. Giờ đây Node12 sẽ tự động xác định bộ nhớ heap và sử dụng làm sao để  không vượt quá bộ nhớ được cấp phép.

Bytecode compiled từ source code chiếm khoảng 15% bộ nhớ heap. Node 12 cài đặt cơ chế làm trống bộ nhớ những bytecode  đã được  sử dụng trong quá trình thực thi garbage collection. 

In order to reduce V8’s memory overhead, we have implemented support for flushing compiled bytecode from functions during garbage collection if they haven’t been executed recently (https://v8.dev/blog/v8-release-74#bytecode-flushing)

globalThis

Đây là một trong những bổ tính năng bổ sung mình mong chờ trong node12 LTS này. Việc build một ứng dụng React vừa render phía server vừa render phía client rất phức tạp, làm cách nào để code của bạn thoả mãn việc render trên phía server là render trên phía client đều được là cả một vấn đề.

Để tiện trong quá trình sử dụng, mình hay nhét 1 số config hay sử dụng vào biến global. Nhưng biến global trên server node là global, còn phía dưới client là window.

Với Node12 giờ đã có globalThis luôn return về giá trị global bất kể nó được gọi ở context nào, tưởng tự như ở phía browser. 

Một lưu ý là bạn cần kiểm tra xem browser nào đang sử dụng ứng dụng của bạn nhiều nhất, vì globalThis chỉ sử dụng được ở những browser version sau:

globalThis support globalThis support

Kết bài

Với những thay đổi tích cực mà Nodejs 12 mang lại thì update project của bạn lên version 12.x là điều sứng đáng với công sức bạn bỏ ra. Ngoài ra các bạn phát hiện được tính năng nào hay ho của Nodejs 12 thì comment để chia sẽ với mọi người nhaaaaaa.

Tài liệu tham khảo

Full changelog Node12 bạn có thể xem ở đây:

#javascript
6
0
...