Làm thế nào tôi cảm nhận được nỗi đau của bạn!
Giống như nhiều người khác, tôi thấy thật khó để hiểu được bản chất của Node.js vì hầu hết mọi người chỉ viết / nói về phần của Node mà họ thấy hữu ích - và phần họ thấy thú vị thường là lợi ích phụ của Node hơn là chính của nó. mục đích. Tôi phải nói rằng tôi nghĩ thật điên rồ khi mọi người nói rằng Node chỉ là một thời gian chạy JavaScript. Việc sử dụng JavaScript của Node - và việc lựa chọn thời gian chạy V8 - chỉ đơn giản là phương tiện để kết thúc , là công cụ tốt nhất cho vấn đề mà các nhà phát triển của Node muốn giải quyết.
Mục đích chính của Node là làm cho việc quản lý các sự kiện của người dùng trong ứng dụng web hiệu quả hơn. Vì vậy, Node áp đảođược sử dụng ở mặt sau của một ứng dụng web. Quản lý sự kiện yêu cầu rằng một cái gì đó đang lắng nghe ở máy chủ đối với các sự kiện người dùng này. Vì vậy, một máy chủ http phải được thiết lập để định tuyến mỗi sự kiện đến tập lệnh xử lý thích hợp của nó. Node cung cấp một khuôn khổ để nhanh chóng thiết lập một máy chủ để lắng nghe trên một cổng dành riêng cho các yêu cầu của người dùng. Node sử dụng JavaScript để xử lý sự kiện vì JavaScript có các hàm gọi lại: điều này cho phép tạm dừng một tác vụ cho đến khi trả về kết quả của một tác vụ phụ thuộc. Không nhiều ngôn ngữ khác có tính năng này và những ngôn ngữ có thể không có trình thông dịch hiệu quả như thời gian chạy V8 của Google. Hầu hết các nhà phát triển web đều biết JavaScript nên không cần học thêm ngôn ngữ nào với Node. Hơn nữa, có các chức năng gọi lại cho phép đặt tất cả các tác vụ của người dùng trên một luồng duy nhấtmà không áp dụng quy tắc chặn rõ ràng cho các tác vụ yêu cầu quyền truy cập vào cơ sở dữ liệu hoặc hệ thống tệp. Và đây là điều dẫn đến hiệu quả điều hành vượt trội của Node khi sử dụng đồng thời nhiều - mục đích chính cho sự phát triển của nó.
Để giúp người dùng Node nhanh chóng viết lại mã kết thúc, các nhà phát triển của Node cũng đã tổ chức cả một thư viện JS tích hợp cho các tác vụ thông thường (ví dụ: các vấn đề liên quan đến yêu cầu HTTP, mã hóa chuỗi (de), luồng, v.v.) và kho lưu trữ NPM (Node Package Manager) : đây là một bộ mã nguồn mở, do người dùng duy trì cho các chức năng tiêu chuẩn và tùy chỉnh khác nhau. Tất cả các dự án Node đều cho phép nhập các gói NPM vào một dự án thông qua lệnh cài đặt npm đã.
Các yêu cầu của người dùng được xử lý qua Node sẽ là những thứ mà ứng dụng web cần như xác thực, truy vấn cơ sở dữ liệu, quản lý nội dung (Strapi CMS), v.v. Tất cả những thứ này sẽ được gửi đến cổng Node. (Trong trường hợp việc phân tích dữ liệu nhận được từ cơ sở dữ liệu tốn rất nhiều thời gian của CPU, loại quy trình này tốt nhất nên được đặt trên một chuỗi riêng biệt để nó không làm chậm các yêu cầu đơn giản hơn của người dùng.) , tải xuống tệp CSS / JS / hình ảnh, v.v., sẽ tiếp tục được trình duyệt gửi đến (các) cổng mặc định trên máy chủ nơi chương trình máy chủ web (Apache, NGinx, v.v.) sẽ xử lý chúng.
Vì vậy, trên thực tế , Node về cơ bản là một khuôn khổ để tạo máy chủ nhanh chóng và xử lý sự kiện nhưng là một khung chỉ thay thế một số chức năng của chương trình máy chủ web.
Các cách sử dụng Node không phụ trợ khác chỉ đơn giản là khai thác một hoặc các tính năng khác của nó, ví dụ: động cơ V8. Ví dụ: các công cụ xây dựng giao diện người dùng Grunt và Gulp sử dụng Node.js để xử lý một tập lệnh xây dựng có thể được mã hóa để chuyển đổi SASS thành CSS, thu nhỏ tệp CSS / JS, tối ưu hóa kích thước / tải hình ảnh, v.v. Nhưng loại công việc này thực sự chỉ sử dụng sản phẩm phụ của Node, không phải công dụng chính của nó là để tạo các quy trình phụ trợ hiệu quả cho các ứng dụng web.