2012-01-16 33 views
12

Tôi đã cố gắng học Node.js trong vài ngày, nhưng có một điều tôi đang bối rối.Node.js: Tem phía máy khách v/s Templating phía máy chủ

Sự khác biệt giữa giải pháp khuôn mẫu phía máy khách như mẫu JQuery và giải pháp phía máy chủ như Jade cho Node.js là gì?

Cách sử dụng cho mỗi loại là gì? Chúng được sử dụng ở đâu? Chúng có thể được sử dụng cùng nhau không? Có một exampe của cả hai người trong số họ đang được sử dụng với nhau nếu như vậy?

Tôi chỉ không thể xoay quanh vấn đề này. Sẽ thật tuyệt khi có một cái nhìn tổng quan về những thứ từ một ai đó quanh đây ...

Trả lời

27

Điều quan trọng nhất cần được xem xét về phía máy khách và khuôn mẫu phía máy chủ là việc tạo khuôn mẫu phía máy khách sẽ không hoạt động nếu JavaScript bị tắt khách hàng vì bất kỳ lý do gì.

Nếu không, đó không phải là sự khác biệt lớn. Đó là chủ yếu cho dù bạn muốn tạo đánh dấu của bạn trên máy chủ, hoặc trên máy khách.

Lý do điển hình để sử dụng mẫu phía máy khách là nếu bạn có ứng dụng tải nhiều dữ liệu hơn từ máy chủ bằng cách sử dụng ajax, websockets hoặc như vậy. Trong trường hợp này, bạn có thể muốn có một mẫu phía máy khách để hiển thị dữ liệu mới được tải.

Ví dụ:

Trong một ứng dụng tôi đã viết, tôi đã sử dụng EJS mẫu trên máy chủ để tạo ra các đánh dấu cơ bản: Người đứng đầu, cơ thể, chân, vv - nội dung mà không thay đổi.

Ứng dụng sử dụng socket.io, ứng dụng này sẽ gửi cho khách hàng một số sự kiện và dữ liệu từ máy chủ. Để hiển thị dữ liệu này, tôi đã sử dụng templating phía máy khách của Knockoutjs.

Vì vậy, trong trường hợp của tôi, đó là một cách tiếp cận lai. Lý do tôi đã làm nó như thế này là bởi vì đánh dấu tôi tạo ra trên máy chủ sẽ ngay lập tức hiển thị khi trang tải. Dữ liệu đến từ socket.io cũng có thể được đưa vào HTML trên máy chủ, nhưng điều đó đòi hỏi nhiều băng thông gửi hơn gửi các đối tượng JSON đơn giản hoặc như vậy, vì vậy tôi đã chọn hiển thị chúng trên máy khách.

Rõ ràng là tôi có thể đã sử dụng mẫu phía máy khách cho toàn bộ trang web, nhưng tôi thấy không có lợi ích khi hiển thị các phần tĩnh trên máy khách. Nó sẽ chỉ làm cho mã phía máy khách của ứng dụng của tôi phức tạp hơn.

Các vấn đề liên quan