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

Có sẵn giải phóng Node.js 13.0, nền tảng để chạy các ứng dụng mạng bằng JavaScript. Đồng thời, quá trình ổn định nhánh trước của Node.js 12.x đã hoàn tất, được chuyển sang danh mục phát hành hỗ trợ dài hạn, các bản cập nhật được phát hành trong 4 năm. Hỗ trợ cho nhánh LTS trước đây của Node.js 10.0 sẽ kéo dài đến tháng 2021 năm 8.0 và hỗ trợ cho nhánh LTS 2020 cuối cùng cho đến tháng XNUMX năm XNUMX.

Chính cải tiến:

  • Động cơ V8 được cập nhật lên phiên bản 7.8, sử dụng các kỹ thuật tối ưu hóa hiệu suất mới, cải thiện khả năng phân hủy đối tượng, giảm mức tiêu thụ bộ nhớ và giảm thời gian chuẩn bị cho việc thực thi WebAssembly;
  • Hỗ trợ đầy đủ cho quốc tế hóa và Unicode dựa trên thư viện được bật theo mặc định ICU (Thành phần quốc tế cho Unicode), cho phép các nhà phát triển viết mã ủng hộ làm việc với các ngôn ngữ và địa phương khác nhau. Mô-đun full-icu hiện được cài đặt theo mặc định;
  • API ổn định Chủ đề công nhân, cho phép tạo các vòng lặp sự kiện đa luồng. Việc triển khai dựa trên mô-đun worker_threads, cho phép bạn chạy mã JavaScript trong nhiều luồng song song. Hỗ trợ ổn định cho API Worker Threads cũng đã được chuyển sang nhánh LTS của Node.js 12.x;
  • Yêu cầu đối với nền tảng đã được tăng lên. Để tập hợp bây giờ yêu cầu ít nhất macOS 10.11 (yêu cầu Xcode 10), AIX 7.2, Ubuntu 16.04, Debian 9, EL 7, Alpine 3.8, Windows 7/2008;
  • Cải thiện hỗ trợ cho Python 3. Nếu hệ thống có cả Python 2 và Python 3, Python 2 vẫn được sử dụng, nhưng khả năng xây dựng khi chỉ cài đặt Python 3 trên hệ thống đã được thêm vào;
  • Việc triển khai cũ của trình phân tích cú pháp HTTP (“—http-parser=legacy”) đã bị xóa. Các lệnh gọi và thuộc tính đã bị xóa hoặc không được dùng nữa Phương thức FSWatcher.prototype.start(), ChildProcess._channel, open() trong các đối tượng ReadStream và WriteStream, request.connection, reply.connection, module.createRequireFromPath();
  • Tiếp theo đi ra bản cập nhật 13.0.1, nhanh chóng sửa một số lỗi. Đặc biệt, vấn đề npm 6.12.0 hiển thị cảnh báo về việc sử dụng phiên bản không được hỗ trợ đã được giải quyết.

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