2011-12-16 25 views
6

Tôi đang tìm hiểu về động cơ templating Jade đi kèm với Express. Theo tôi hiểu, Jade cho phép hiển thị phía máy chủ. Không phải là tối ưu dưới mức vì hai lý do:Có ý nghĩa khi hiển thị mẫu phía máy chủ không?

1) Máy chủ phải tính toán nhiều hơn để hiển thị mẫu. Công việc có thể được đẩy phía máy khách.

2) Khi một mẫu hoặc một phần đã được hiển thị và dữ liệu cần cập nhật, nó chỉ gửi JSON cho ứng dụng khách, thay vì gửi lại HTML chính thức, đây là phần tiêu hao băng thông.

Những sự cố thực sự này có hiển thị mẫu phía máy chủ không?

Trả lời

7

Tôi nghĩ điều đó thực sự phụ thuộc vào loại ứng dụng bạn đang viết. Nếu bạn có một trang chủ yếu phục vụ các trang riêng lẻ và loại phù hợp với khuôn CRUD/MVC điển hình của bạn, nó có thể không phải là một vấn đề. Tuy nhiên, nếu bạn đang viết một cái gì đó năng động với một tấn ajax, đó là một vấn đề :-)

Tôi cảm thấy đau đớn của bạn - Tôi đã bị cắn một vài lần trong các ngăn xếp khác nhau. Tôi đã kết thúc chỉ làm tất cả các ràng buộc danh sách của tôi với các cuộc gọi không đồng bộ trong trình duyệt thực thi sau khi tải trang lõi. Nó là loại stinks, bởi vì bạn thích yêu cầu đầu tiên đến với một trang dữ liệu danh sách trước ràng buộc, nhưng trang tiếp theo được thúc đẩy bởi các cuộc gọi ajax. Tôi chỉ không muốn viết mẫu một lần cho máy chủ và một lần cho khách hàng.

Tôi không/nghĩ/Jade hỗ trợ loại ràng buộc phía khách hàng đó. Tin vui là có một vài ngôn ngữ phổ biến làm việc trên cả máy chủ và trong trình duyệt. Hai tôi biết là:

Tôi chưa thấy ai sử dụng các tấm với tốc, vì nó thuộc về các dự án flatironjs mà loại có đó là khung phát triển riêng của nó đang diễn ra. Có rất nhiều ví dụ ra có sử dụng bộ ria mép và EJS với tốc:

Trên một mặt lưu ý, đây là một danh sách các gói khuôn mẫu cho nút trên trang web của Joyent của:

Đề xuất của tôi là bắt đầu với EJS - một chút nữa xuống đất với cú pháp không phải HAML-esque, hỗ trợ ràng buộc máy khách và máy chủ, và dường như được chấp nhận tốt trong ngăn xếp nhanh.

Mã hóa hạnh phúc!

+0

Cảm ơn, điều đó rất hữu ích. Bởi "danh sách các ràng buộc", bạn có nghĩa là "populating với dữ liệu"? Ngoài ra, bạn dường như đề xuất chỉ làm việc với các mẫu phía máy khách, do đó người dùng không phải viết lại chúng cho máy chủ. Vậy tại sao bạn đã chọn ra các ngôn ngữ tạo khuôn mẫu hoạt động trên cả máy khách và máy chủ? – Randomblue

+0

Khi tôi nói các ràng buộc danh sách, tôi muốn tạo một yêu cầu cho một danh sách dữ liệu (thường là json/xml, paged), áp dụng cấu trúc dữ liệu đó cho một khuôn mẫu và hiển thị html cho máy khách. Tôi không gợi ý rằng bạn chỉ sử dụng các mẫu phía máy khách - lý do tôi chỉ ra những cái mà làm việc trên cả hai là tôi muốn chúng có sẵn trong cả hai trường hợp. –

+0

Ví dụ - Tôi muốn có một mẫu cho một mục danh sách trong bộ lặp. Sử dụng điều này trên máy khách hoạt động tốt - bạn yêu cầu một trang dữ liệu và ràng buộc tất cả trong máy khách. Điều gì sẽ xảy ra khi tôi muốn sử dụng cùng một mẫu trên tiêu đề trang? Tôi chắc chắn sẽ không thực hiện một yêu cầu http chỉ cho thông tin tiêu đề đó, nhưng tôi không muốn viết cùng một mẫu một lần nữa chỉ cho việc sử dụng này. Đây là nơi mà khuôn mẫu kép được tạo thành tuyệt vời. (xin lỗi vì bài đăng siêu dài) –

1

Có một điểm quan trọng khác. Tùy thuộc vào mục tiêu trang web của bạn. Bạn có thể phải chú ý đến SEO hay không.

Trong từ đơn giản, nội dung được tạo từ máy chủ được lập chỉ mục bởi công cụ tìm kiếm. Những người khác thì không. Bởi vì trình thu thập thông tin của công cụ tìm kiếm không quan tâm đến nội dung phía máy khách.

+1

Google bot hiện đang chạy JavaScript, vì vậy, Google có thể lập chỉ mục nội dung được hiển thị bởi khách hàng nội dung. – Matt

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