Để bắt đầu với tin xấu: Vì Node.js là một kỹ thuật khá non trẻ, tôi nghĩ bạn sẽ thấy rằng quy trình tạo ra một trang web chính thức và duy trì / vận hành nó sẽ rất khác so với những gì bạn hiện đang làm.
Josh3736 cho biết thêm: Sau khi bạn tìm ra cách Node.js và các gói khác nhau của nó (Connect, Express) hoạt động, tôi thấy rằng bạn có thể phát triển các trang web mới rất nhanh chóng.
Tuy nhiên, những góc cạnh thô ráp hiện đang tồn tại trong Node.js, kết hợp với tốc độ phát triển nhanh chóng của nó và tất cả các mô-đun liên quan có thể làm phức tạp mọi thứ và khiến mọi thứ trở nên ít đơn giản, nhanh chóng và đơn giản hơn bạn muốn.
Có điều đó không xảy ra, đây là tin tốt:
Các Node Package Manager, NPM có rất nhiều công cụ tốt và khuôn khổ để mở rộng chức năng xương trần Node.js của, làm cho nó phù hợp để tạo ra một máy chủ web.
Đáng chú ý nhất là Express Framework chứa hầu hết mọi thứ bạn cần để chạy một máy chủ web (bao gồm cookie, phiên và định tuyến đường dẫn). Ngoài ra Express còn hỗ trợ các phân đoạn, hỗ trợ phần đầu trang và chân trang của bạn bao gồm.
Express được xây dựng trên Sencha's Connect . Cookie và phiên thực sự được cung cấp bởi Connect. Express là thứ đơn giản hóa việc định tuyến của bạn và xử lý các lượt xem / chia nhỏ. Vì vậy, nếu bạn không cần tất cả chuông và còi đi kèm với Express, bạn chỉ có thể sử dụng Connect.
Nếu bạn thích sử dụng các mẫu cho các phần này, Công cụ Mẫu Ngọc có thể đẩy nhanh tiến độ cho bạn. Mặc dù Josh3736 chỉ ra rằng Jade chậm và có khoảng trắng đáng kể. Bạn có thể tìm thấy tổng quan đầy đủ hơn ở đây , bao gồm doT yêu thích của anh ấy . (Cá nhân tôi chỉ sử dụng Node.js cho socket.io
các ứng dụng dựa trên, vì vậy anh ấy là một nguồn tốt hơn tôi khi nói đến khuôn mẫu).
Bạn có thể kết nối với MySQL từ Node.js bằng mô-đun db-mysql , nhưng nếu bạn không cần điều đó vì bạn đang truy cập dữ liệu được kết nối với hệ thống đã có, tôi khuyên bạn nên sử dụng ... 'hiện đại hơn 'cách tiếp cận, đó là sử dụng cơ sở dữ liệu NoSQL như hầu hết các dự án Node.js dường như làm. MongoDB qua Mongoose là cách phổ biến để sử dụng.
Hoặc nếu nó chỉ lưu trữ các đối tượng mà bạn quan tâm, thay vào đó chỉ cần sử dụng Redis (thứ mà bạn có thể sẽ cần vào một lúc nào đó).
Khi trang web của bạn hoàn tất, bạn sẽ phải triển khai nó và đảm bảo rằng nó tiếp tục chạy. Có nhiều cách để làm như vậy, chẳng hạn như sử dụng hỗ trợ cụm tích hợp hoặc sử dụng forever
mô-đun npm thân thiện với tính năng hơn . Xem câu hỏi SO này của tôi để biết thêm thông tin.
Kết luận :
Điều tôi đang cố gắng đạt được là:
Hỏi cách tốt nhất để xây dựng một trang web trong Node.js là gì, cũng giống như việc hỏi cách tốt nhất để xây dựng một trang web bằng PHP là gì: 100 nhà phát triển sẽ cho bạn 100 câu trả lời khác nhau.
NPM được may mắn với một loạt các khuôn khổ tuyệt vời giúp đơn giản hóa rất nhiều nhiệm vụ liên quan, nhưng tất cả đều dựa trên sở thích xem cái nào mới là cách thực sự.
Như tôi đã nói, Node.js vẫn còn là một kỹ thuật khá non trẻ, vì vậy chưa có khung công tác hoặc công cụ bổ sung nào nổi lên là 'tiêu chuẩn defacto'; đối với hầu hết những thứ bạn đang cố gắng thực hiện, có thể có nhiều lựa chọn thay thế khác nhau và mong muốn mã của bạn bị hỏng khi sử dụng hầu hết chúng trong quá trình cập nhật, bởi vì sự phát triển của chính Node.js và hầu hết các mô-đun đều có tốc độ nhanh. Bạn sẽ phải theo kịp.
Kết hợp tất cả lại với nhau :
Như tôi đã nói, mục đích sản xuất chính của tôi cho Node.js là có thể sử dụng socket.io
, vì vậy tôi không có bất kỳ ví dụ sản xuất tốt nào hiện tại (Và vì tôi sắp rời đi trong một kỳ nghỉ xứng đáng, tôi không có ' t có thời gian để ghép một cái lại với nhau). Tuy nhiên, có một số ví dụ điển hình:
Một lần nữa, con đường để đi (và sau đó là ví dụ để làm theo) phụ thuộc rất nhiều vào mục tiêu cuối cùng của bạn và các kỹ thuật đã chọn, nhưng may mắn là có rất nhiều nguồn có sẵn cho tất cả các lựa chọn có sẵn. Hầu hết các mô-đun sử dụng các kho lưu trữ GitHub được ghi chép đầy đủ và bao gồm các ví dụ kết hợp với các mô-đun phổ biến nhất (Xem /examples/
dir dường như có mặt trong hầu hết các kho lưu trữ).
Chúc may mắn! (Và cảm ơn Josh3736 đã sửa lỗi cho tôi.)