blog detail banner

TTLab Academy Blogs

Có gì mới ở Node.js v18?

list-icon

Mục lục

plus-iconminus-icon
Đầu tiên phải nói đến fetch - tính năng được cộng đồng mạng yêu thích nhất
Một tính năng nữa mình nghĩ là nhỏ nhưng khá hữu ích cho chúng ta khi xử lý mảng đó là thêm các function findLast, findLastIndex
--watch
Test runner module (đang trong quá trình thử nghiệm)
Web Streams API

Tại mỗi phiên bản mới của Node.js thường cung cấp cải tiến về hiệu suất, tính năng mới. Vậy có gì mới ở Node.js v18? Cùng Tokyo Tech Lab Academy tìm hiểu qua bài viết dưới đây nha! 

Node.js-18.png

Đầu tiên phải nói đến fetch - tính năng được cộng đồng mạng yêu thích nhất

Từ trước đến nay, khi cần thực hiện request API từ ứng dụng node.js, chúng ta thường phải xài các thư viện ngoài như node-fetch, axios …, tuy nhiên, kể từ bây giờ, chúng ta đã có thể sử dụng fetch như là 1 thư viện native trong node.js với cú pháp vô cùng đơn giản như dưới đây:

Screenshot 2023-07-07 120845.png

Bên cạnh fetch thì ở version này, bạn cũng có thể sử dụng FormData, Headers, Request, Response như là các global interface/class.

Việc sử dụng fetch trong node.js hoàn toàn tương tự như  sử dụng fetch ở browser, bạn có thể tham khảo tại đây: https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch

Trong khuôn khổ bài viết này mình chỉ giới thiệu về các tính năng mới của node.js 18, để đào sâu hơn về fetch và sử dụng fetch trong dự án node.js như thế nào (ví dụ các thêm interceptor, …) mình sẽ viết một bài chuyên sâu sau, các bạn nhớ theo dõi nhé.

Một tính năng nữa mình nghĩ là nhỏ nhưng khá hữu ích cho chúng ta khi xử lý mảng đó là thêm các function findLast, findLastIndex

Trước nay thì node.js chỉ cung cấp sẵn các hàm để tìm phần tử đầu tiên, nếu muốn tìm phân tử cuối cùng thì các bạn thường làm như thế nào? Kể từ bây giờ các bạn có thể làm như dưới đây, rất đơn giản phải không nào?

Screenshot 2023-07-07 121125.png

--watch

Các bạn lập trình viên node.js chắc đã quá quen nodemon, công cụ sử dụng trong quá trình phát triển để tự động reload lại ứng dụng node.js khi có bất kỳ file nào thay đổi.

Nhưng từ nay các bạn có thể quên nodemon được rồi nhé, node.js 18 đã tích hợp sẵn tham số  --watch khi chạy ứng dụng, muốn reload khi có bất kỳ thay đổi file bạn chỉ cần chạy node --watch, quá tiện phải không nào

Test runner module (đang trong quá trình thử nghiệm)

Trong tương lai không xa, khi viết test trong dự án chúng ta có lẽ cũng chẳng cần phải import các thư viện như mocha, jest … nữa, cứ thế sử dụng các module native của node.js là đủ rồi. Hãy xem 01 ví dụ minh họa cách viết nhé:

Screenshot 2023-07-07 121523.png

Web Streams API

Trước nay, chúng ta luôn phải download toàn bộ file (video, image, …) và đợi để xử lý việc chuyển đổi (deserialized) sang định dạng phù hợp, tức là chúng ta chỉ có thể xử lý dữ liệu sau khi nhận đầy đủ dữ liệu trong file về.

Với Web Streams API, chúng ta có thể truy cập vào luồng dữ liệu trong quá trình truyền tải mà cũng không cần phải tạo buffer. Thêm vào đó, Web Streams API giúp chúng ta phát hiện ra được khi nào thì một luồng dữ liệu (stream) bắt đầu hoặc kết thúc, xâu chuỗi các luồng dữ liệu lại với nhau, xử lý lỗi xảy ra, hủy bỏ luồng dữ liệu nếu cần thiết và thích ứng linh hoạt với tốc độ đọc dữ liệu.

Node.js 18 cung cấp các api Web Streams trong phạm vi global (tức là bạn không cần phải khai báo khi sử dụng)

Dưới đây là 1 ví dụ về ReadableStreamReadableStreamDefaultControllerReadableStream để chứa dữ liệu còn ReadableStreamDefaultController sẽ điều khiển trạng thái và hàng đợi trong ReadableStream

Screenshot 2023-07-07 121754.png

Ngoài 2 api trên thì Node.js 18 còn cung cấp các API dưới đây ở phạm vi toàn cục (global):

  • ReadableStream

  • ReadableByteStreamController

  • WritableStream

  • ReadableStreamDefaultReader

  • ReadableStreamDefaultController

  • WritableStreamDefaultWriter

  • ReadableStreamBYOBReader

  • TransformStream

  • WritableStreamDefaultController

  • ReadableStreamBYOBRequest

  • TransformStreamDefaultController

  • ByteLengthQueuingStrategy

  • CountQueuingStrategy

  • TextEncoderStream

  • TextDecoderStream

  • CompressionStream

  • DecompressionStream

 

Tokyo Tech Lab Academy vừa giới thiệu 5 tính năng hay được sử dụng trong quá trình phát triển. Bên cạnh các tính năng này, node.js 18 cũng đưa ra thêm nhiều tính năng thú vị khác nữa, các bạn có thể truy cập https://nodejs.org/en/blog và đọc kỹ hơn nhé.

Hãy bấm theo dõi Tokyo Tech Lab Academy để cập nhập thông tin hữu ích nhanh chóng!

Tokyo Tech Lab Academy

facebook icon
Chia sẻ
Tokyo Tech Lab

Thầy tận tâm, trò nâng tầm

Khóa học

    Liên hệ

    • email icon

    • phone icon

    • location icon

    © 2023 Tokyo Tech Lab Academy. All Rights Reserved.