NodeJS là một khung/mã cơ sở tốt cho ứng dụng phía máy chủ lớn phải không?
Câu hỏi đó hơi chủ quan nhưng tôi bao gồm các điểm khách quan thực tế giải quyết các vấn đề thực sự khi làm việc với nút trong một dự án lớn.
Cập nhật sau khi làm việc trên dự án cho một lúc:
Tốt nhất là như một máy chủ kết thúc/API trước đó là I/O bound (máy chủ front end nhất/api là). Nếu bạn có nhu cầu tính toán phụ trợ (xử lý vv ...), nó có thể được ghép nối với các công nghệ khác (C# lõi ròng, đi, Java vv ... nút công nhân)
Tôi đã tạo dự án này làm mẫu minh họa hầu hết các điểm - Sane Node Phát triển: https://github.com/bryanmacfarlane/sanenode
NodeJS không được xây dựng trên đỉnh máy chủ http riêng của mình. Nó được xây dựng trên đỉnh động cơ javascript Chrome chrome và không giả định một máy chủ http. Có một mô đun http được xây dựng trong cũng như phổ biến express web server nhưng cũng có các mô-đun ổ cắm (cũng như socket.io). Nó không chỉ là một máy chủ http.
Chủ đề duy nhất không gây tắc nghẽn vì tất cả I/O được đặt và không đồng bộ. Liên kết này giải thích rõ ràng: http://blog.mixu.net/2011/02/01/understanding-the-node-js-event-loop/
Theo mô-đun phần mềm, bạn có thể tìm kiếm tại npm registry. Luôn luôn xem có bao nhiêu người khác sử dụng nó (tải xuống) và truy cập repo github để xem liệu nó có đang được duy trì hay không (hoặc có một loạt vấn đề không bao giờ được chú ý).
Về "dự án lớn" những gì tôi đã tìm thấy quan trọng cho sự phát triển lành mạnh là:
hỗ trợ biên dịch thời gian (và IntelliSense): Tìm vấn đề khi bạn biên dịch. Nếu bạn không nghĩ rằng bạn cần điều này như tôi đã làm khi tôi bắt đầu, bạn sẽ thay đổi tâm trí của bạn sau đó refactor lớn đầu tiên.
Loại bỏ gọi lại Địa ngục: Giữ hiệu suất quan trọng (đã lưu ý ở trên) nhưng loại bỏ mã gọi lại. Sử dụng async/await để viết mã tuyến tính và giữ nguyên không đồng bộ. Tích hợp với lời hứa nhưng tốt hơn nhiều so với chỉ sử dụng lời hứa.
Dụng cụ: Rất nhiều tùy chọn nhưng tôi thấy tốt nhất là Typecript (ES6/7 hôm nay), VS Code (intellisense), Mocha (thử nghiệm đơn vị).
Thiết bị/ghi nhật ký: Nhận thông tin chi tiết về ứng dụng của bạn bằng truy tìm và thiết bị là rất quan trọng.
Xây dựng trên các khuôn khổ được kiểm tra kỹ lưỡng: Tôi sử dụng thể hiện như một ví dụ nhưng đó là sở thích và có các tùy chọn khác.
Sau khi làm việc trên các dự án thực trong một thời gian, tôi đã cập nhật câu trả lời của mình với những phát hiện mới nhất. – bryanmac