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

Node.js 19.0, một nền tảng chạy các ứng dụng mạng bằng JavaScript, đã được phát hành. Node.js 19 là nhánh hỗ trợ thường xuyên với các bản cập nhật có sẵn cho đến tháng 2023 năm 18. Trong những ngày tới, quá trình ổn định của nhánh Node.js 2025 sẽ hoàn tất, nhánh này sẽ nhận được trạng thái LTS và sẽ được hỗ trợ cho đến tháng 16.0 năm 2023. Việc bảo trì nhánh LTS trước đây của Node.js 14.0 sẽ kéo dài đến tháng 2023 năm XNUMX và năm trước nhánh LTS XNUMX cuối cùng cho đến tháng XNUMX năm XNUMX.

Cải tiến chính:

  • Công cụ V8 đã được cập nhật lên phiên bản 10.7, được sử dụng trong Chrome 107. Trong số những thay đổi của công cụ so với nhánh Node.js 18, đáng chú ý là việc triển khai phiên bản thứ ba của API Intl.NumberFormat, bổ sung thêm các chức năng mới formatRange (), formatRangeToParts() và selectRange(), nhóm các tập hợp, các tùy chọn mới để làm tròn và cài đặt độ chính xác, khả năng diễn giải chuỗi dưới dạng số thập phân. Các phần phụ thuộc đi kèm llhttp 8.1.0 và npm 8.19.2 cũng đã được cập nhật.
  • Lệnh "node -watch" thử nghiệm đã được đề xuất cùng với việc triển khai chế độ đồng hồ để đảm bảo rằng quy trình được khởi động lại khi tệp đã nhập thay đổi (ví dụ: nếu "node -watch index.js" được thực thi, quy trình sẽ được thực hiện tự động khởi động lại khi index.js thay đổi).
  • Đối với tất cả các kết nối HTTP/HTTPS gửi đi, hỗ trợ cho cơ chế HTTP 1.1 Keep-Alive được bật, giúp kết nối mở trong một thời gian nhất định để xử lý một số yêu cầu HTTP trong cùng một kết nối. Keep-Alive được kỳ vọng sẽ cải thiện thông lượng và hiệu suất. Theo mặc định, thời gian chờ mở kết nối được đặt thành 5 giây. Hỗ trợ phân tích cú pháp tiêu đề HTTP Keep-Alive trong phản hồi của máy chủ đã được thêm vào quá trình triển khai máy khách HTTP và việc tự động ngắt kết nối các máy khách không hoạt động bằng cách sử dụng Keep-Alive đã được thêm vào quá trình triển khai máy chủ HTTP Node.js.
  • API WebCrypto đã được chuyển sang danh mục ổn định, ngoại trừ các chức năng sử dụng thuật toán Ed25519, Ed448, X25519 và X448. Để truy cập mô-đun WebCrypto, giờ đây bạn có thể sử dụng GlobalThis.crypto hoặc require('node:crypto').webcrypto.
  • Hỗ trợ cho các công cụ theo dõi DTrace, SystemTap và ETW (Theo dõi sự kiện cho Windows) đã bị xóa, việc bảo trì chúng được coi là không phù hợp do việc duy trì cập nhật công cụ này rất phức tạp khi không có kế hoạch hỗ trợ phù hợp.

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