Phát hành nền tảng JavaScript phía máy chủ Node.js 14.0

diễn ra giải phóng Node.js 14.0, nền tảng để chạy các ứng dụng mạng bằng JavaScript. Node.js 14.0 là nhánh hỗ trợ dài hạn, nhưng trạng thái này sẽ chỉ được cấp vào tháng 14.0, sau khi ổn định. Node.js XNUMX sẽ được hỗ trợ đã tiến hành cho đến tháng 2023 năm 12.0. Việc bảo trì nhánh LTS trước đây của Node.js 2022 sẽ kéo dài đến tháng 10.0 năm 2021 và năm trước nhánh LTS 13 cuối cùng sẽ kéo dài đến tháng XNUMX năm XNUMX. Hỗ trợ cho nhánh dàn XNUMX.x sẽ kết thúc vào tháng XNUMX năm nay.

Chính cải tiến:

  • Khả năng tạo nhanh chóng hoặc khi xảy ra một số sự kiện nhất định đã được ổn định báo cáo chẩn đoán, hiển thị các sự kiện giúp chẩn đoán các sự cố như sự cố, suy giảm hiệu suất, rò rỉ bộ nhớ, tải CPU nặng, lỗi đầu ra không mong muốn, v.v.
  • Đã thêm hỗ trợ API thử nghiệm Bộ nhớ cục bộ không đồng bộ với việc triển khai lớp AsyncLocalStorage, lớp này có thể được sử dụng để tạo trạng thái không đồng bộ với các trình xử lý dựa trên lời hứa và lệnh gọi lại. AsyncLocalStorage cho phép bạn lưu trữ dữ liệu trong khi yêu cầu web đang được xử lý, gợi nhớ đến bộ nhớ cục bộ theo luồng trong các ngôn ngữ khác.
  • Đã xóa thông báo cảnh báo về tính năng thử nghiệm khi tải mô-đun ECMAScript 6 được kết nối và xuất bằng cách sử dụng các câu lệnh nhập và xuất. Đồng thời, việc triển khai các mô-đun ESM vẫn còn mang tính thử nghiệm.
  • Động cơ V8 được cập nhật lên phiên bản 8.1 (1, 2, 3), bao gồm các tính năng và tối ưu hóa hiệu suất mới như toán tử nối logic mới "??" (trả về toán hạng bên phải nếu toán hạng bên trái là NULL hoặc không xác định và ngược lại), toán tử "?." để kiểm tra một lần toàn bộ chuỗi thuộc tính hoặc lệnh gọi (ví dụ: “db?.user?.name?.length” mà không cần kiểm tra sơ bộ), phương thức Intl.DisplayName để lấy tên được bản địa hóa, v.v.
  • Một bản sửa đổi API Streams đã được thực hiện nhằm cải thiện tính nhất quán của API Streams và loại bỏ sự khác biệt trong hoạt động của các phần cơ bản của Node.js. Ví dụ: hành vi của http.OutendingMessage gần giống với streaming.Writable và net.Socket tương tự như stream.Duplex. Tùy chọn autoDestroy được đặt thành "true" theo mặc định, ngụ ý rằng "_destroy" được gọi sau khi hoàn thành.
  • Đã thêm hỗ trợ API thử nghiệm LÀ TÔI (Giao diện hệ thống WebAssugging), cung cấp giao diện phần mềm để tương tác trực tiếp với hệ điều hành (API POSIX để làm việc với các tệp, ổ cắm, v.v.).
  • Yêu cầu gia tăng đối với phiên bản tối thiểu trình biên dịch và nền tảng: macOS 10.13 (High Sierra), GCC 6, Windows mới hơn 7/2008R2.

Chúng ta hãy nhớ lại rằng nền tảng Node.js có thể được sử dụng cho cả mục đích hỗ trợ phía máy chủ cho 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 dành cho Node.js, một số lượng lớn bộ sưu tập các mô-đun, trong đó bạn có thể tìm thấy các mô-đun triển khai 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 với DBMS (MySQL, PostgreSQL, SQLite , MongoDB ), công cụ tạo 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.

Để xử lý số lượng lớn 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 việc xử lý sự kiện không chặn và xác định 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 bao gồm epoll, kqueue, /dev/poll và select. Thư viện được sử dụng để ghép kênh kết nối libuv, đó là một kiến ​​trúc thượng tầng trên miễn phí trên hệ thống Unix và trên IOCP trên Windows. Một thư viện được sử dụng để tạo một thread pool libeio, để thực hiện truy vấn DNS ở chế độ không chặn được tích hợp C-ARES. Tất cả các cuộc gọi hệ thống gây ra việc chặn đều được thực thi trong nhóm luồng và sau đó, giống như các trình 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 dẫn không tên. Việc thực thi mã JavaScript được đảm bảo thông qua việc sử dụng công cụ do Google phát triển V8 (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 framework Perl AnySự kiện, Máy sự kiện Ruby, Python xoắn и thực hiện các sự kiện trong Tcl, nhưng vòng lặp sự kiện trong Node.js bị ẩn khỏi nhà phát triển và tương tự như cách xử lý sự kiện trong ứng dụng web chạy trên trình duyệt. Khi viết ứng dụng cho node.js, cần phải tính đến các chi tiết cụ thể của lập trình hướng sự kiện, chẳng hạn như 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ả tiếp theo, 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 (kết quả) {xử lý kết quả});”, trong đó điều khiển 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