Đã có nền tảng JavaScript phía máy chủ Node.js 18.0

Node.js 18.0 đã được phát hành, một nền tảng để chạy các ứng dụng mạng bằng JavaScript. Node.js 18.0 được phân loại là nhánh hỗ trợ dài hạn, nhưng trạng thái này sẽ chỉ được chỉ định vào tháng 18, sau khi ổn định. Node.js 2025.x sẽ được hỗ trợ cho đến tháng 16 năm 2024. Việc bảo trì nhánh LTS trước đây của Node.js 14.x sẽ kéo dài đến tháng 2023 năm 12 và năm trước nhánh LTS 30.x cuối cùng cho đến tháng 17 năm 1. Nhánh XNUMX.x LTS sẽ ngừng hoạt động vào ngày XNUMX tháng XNUMX và nhánh chạy thử Node.js XNUMX.x sẽ ngừng hoạt động vào ngày XNUMX tháng XNUMX.

Cải tiến chính:

  • Công cụ V8 đã được cập nhật lên phiên bản 10.1, được sử dụng trong Chrome 101. So với bản phát hành 17.9.0 của Node.js, hiện tại đã hỗ trợ các tính năng như phương thức findLast và findLastIndex để tìm các phần tử liên quan đến phần cuối của một mảng và hàm Intl.supportedValuesOf. API Intl.Locale được cải tiến. Việc khởi tạo các trường lớp và phương thức riêng tư đã được tăng tốc.
  • API tìm nạp() thử nghiệm được bật theo mặc định, được thiết kế để tải tài nguyên qua mạng. Việc triển khai dựa trên mã từ ứng dụng khách HTTP/1.1 unici và càng gần giống với API tương tự được cung cấp trong trình duyệt càng tốt. Điều này bao gồm hỗ trợ cho các giao diện FormData, Tiêu đề, Yêu cầu và Phản hồi để thao tác các tiêu đề phản hồi và yêu cầu HTTP. const res = đang chờ tìm nạp('https://nodejs.org/api/documentation.json'); if (res.ok) { const data = đang chờ res.json(); console.log(dữ liệu); }
  • Việc triển khai thử nghiệm API Web Streams đã được thêm vào, cung cấp quyền truy cập vào các luồng dữ liệu nhận được qua mạng. API giúp bạn có thể thêm trình xử lý của riêng mình để xử lý dữ liệu khi thông tin đến qua mạng mà không cần đợi toàn bộ tệp được tải xuống. Các đối tượng hiện có sẵn trong Node.js bao gồm ReadableStream*, TransformStream*, WritableStream*, TextEncodeStream, TextDecodingStream, CompressionStream và DecompressionStream.
  • API Blob đã được chuyển sang trạng thái ổn định, cho phép bạn đóng gói dữ liệu thô bất biến để sử dụng an toàn trong các luồng công việc khác nhau.
  • API BroadcastChannel đã được ổn định, cho phép bạn tổ chức trao đổi tin nhắn ở chế độ không đồng bộ theo định dạng “một người gửi - nhiều người nhận”.
  • Đã thêm nút mô-đun thử nghiệm:kiểm tra để tạo và chạy thử nghiệm trong JavaScript trả về kết quả ở định dạng TAP (Giao thức thử nghiệm mọi thứ).
  • Thế hệ các tập hợp làm sẵn cho Red Hat Enterprise Linux (RHEL) 8 và các bản phân phối khác dựa trên Glibc 2.28+, bao gồm Debian 10 và Ubuntu 20.04, cũng như cho macOS 10.15+ được cung cấp. Do sự cố với bản dựng động cơ V8, việc tạo bản dựng 32-bit cho Windows đã tạm thời bị dừng.
  • Cung cấp tùy chọn thử nghiệm để xây dựng tệp thực thi Node.js với các thành phần do người dùng chọn được khởi tạo khi khởi động. Để xác định các thành phần khởi đầu, tùy chọn “--node-snapshot-main” đã được thêm vào tập lệnh xây dựng cấu hình, ví dụ: “./configure —node-snapshot-main=marked.js; nút tên"

Nền tảng Node.js có thể được sử dụng cho cả việc bảo trì máy chủ của các ứng dụng Web và để tạo các chương trình mạng máy chủ và máy khách thông thường. Để mở rộng chức năng của các ứng dụng cho Node.js, một bộ sưu tập lớn các mô-đun đã được chuẩn bị, trong đó bạn có thể tìm thấy các mô-đun với việc triển khai các máy chủ và máy khách HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, các mô-đun để tích hợp với các khung web khác nhau, trình xử lý WebSocket và Ajax , trình kết nối DBMS (MySQL, PostgreSQL, SQLite, MongoDB), công cụ tạo khuôn mẫu, công cụ CSS, triển khai thuật toán mã hóa và hệ thống ủy quyền (OAuth), trình phân tích cú pháp XML.

Để đảm bảo xử lý một số lượng lớn các yêu cầu song song, Node.js sử dụng mô hình thực thi mã không đồng bộ dựa trên xử lý sự kiện không chặn và định nghĩa về trình xử lý gọi lại. Các phương thức được hỗ trợ cho kết nối ghép kênh là epoll, kqueue, /dev/poll và select. Để ghép kênh kết nối, thư viện libuv được sử dụng, đây là tiện ích bổ sung cho libev trên hệ thống Unix và IOCP trên Windows. Thư viện libeio được sử dụng để tạo nhóm luồng và c-ares được tích hợp để thực hiện các truy vấn DNS ở chế độ không chặn. Tất cả các cuộc gọi hệ thống gây ra chặn được thực thi bên trong nhóm luồng và sau đó, giống như các bộ xử lý tín hiệu, chuyển kết quả công việc của chúng trở lại thông qua một đường ống (pipe) không tên. Việc thực thi mã JavaScript được cung cấp thông qua việc sử dụng công cụ V8 do Google phát triển (ngoài ra, Microsoft đang phát triển phiên bản Node.js với công cụ Chakra-Core).

Về cốt lõi, Node.js tương tự như các khung công tác Perl AnyEvent, Ruby Event Machine, Python Twisted và triển khai sự kiện Tcl, nhưng vòng lặp sự kiện trong Node.js bị ẩn khỏi nhà phát triển và giống như xử lý sự kiện trong ứng dụng web đang chạy trong trình duyệt. Ví dụ: khi viết ứng dụng cho node.js, bạn cần xem xét các chi tiết cụ thể của lập trình hướng sự kiện, thay vì thực hiện "var result = db.query("select..");" với việc chờ hoàn thành công việc và xử lý kết quả sau đó, Node.js sử dụng nguyên tắc thực thi không đồng bộ, tức là mã được chuyển đổi thành "db.query("select..", function (result) {result processing});", trong đó kiểm soát sẽ ngay lập tức chuyển sang mã tiếp theo và kết quả truy vấn sẽ được xử lý khi dữ liệu đến.

Nguồn: opennet.ru

Thêm một lời nhận xét