Tôi thực sự là một chút ở cả hai phía:
- Khi những gì tôi cần ở phía javascript là dữ liệu , tôi sử dụng JSON
- Khi những gì tôi cần ở phía javascript là phần trình bày mà tôi sẽ không thực hiện bất kỳ phép tính nào, tôi thường sử dụng HTML
Ưu điểm chính của việc sử dụng HTML là khi bạn muốn thay thế một phần đầy đủ của trang của mình bằng những gì quay lại từ yêu cầu Ajax:
- Xây dựng lại một phần trang trong JS là (khá) khó
- Bạn có thể đã có một số công cụ tạo khuôn mẫu ở phía máy chủ, được sử dụng để tạo trang ở vị trí đầu tiên ... Tại sao không sử dụng lại nó?
Tôi thường không thực sự xem xét khía cạnh "hiệu suất" của mọi thứ, ít nhất là trên máy chủ:
- Trên máy chủ, việc tạo một phần HTML hoặc một số JSON có thể sẽ không tạo ra nhiều sự khác biệt
- Về kích thước của nội dung qua mạng: tốt, bạn có thể không sử dụng hàng trăm KB dữ liệu / html ... Sử dụng gzip trên bất cứ thứ gì bạn đang chuyển là điều sẽ tạo ra sự khác biệt lớn nhất (không chọn giữa HTML và JSON)
- Tuy nhiên, một điều có thể được xem xét là tài nguyên mà bạn cần trên máy khách để tạo lại HTML (hoặc cấu trúc DOM) từ dữ liệu JSON ... so sánh với việc đẩy một phần HTML vào trang; -)
Cuối cùng, một điều chắc chắn có vấn đề:
- Bạn sẽ mất bao lâu để phát triển một hệ thống mới sẽ gửi dữ liệu dưới dạng mã JSON + mà JS yêu cầu để đưa nó dưới dạng HTML vào trang?
- Sẽ mất bao lâu để trả về HTML? Và mất bao lâu nếu bạn có thể sử dụng lại một số mã phía máy chủ hiện có của mình?
Và để trả lời một câu trả lời khác: nếu bạn cần cập nhật nhiều hơn một phần của trang, vẫn có giải pháp / hack gửi tất cả các phần đó trong một chuỗi lớn nhóm một số phần HTML và trích xuất các phần có liên quan trong JS.
Chẳng hạn, bạn có thể trả về một số chuỗi trông như thế này:
<!-- MARKER_BEGIN_PART1 -->
here goes the html
code for part 1
<!-- MARKER_END_PART1 -->
<!-- MARKER_BEGIN_PART2 -->
here goes the html
code for part 2
<!-- MARKER_END_PART2 -->
<!-- MARKER_BEGIN_PART3 -->
here goes the json data
that will be used to build part 3
from the JS code
<!-- MARKER_END_PART3 -->
Điều đó trông không thực sự tốt, nhưng nó thực sự hữu ích (tôi đã sử dụng nó khá nhiều lần, chủ yếu là khi dữ liệu HTML quá lớn để được gói gọn trong JSON) : bạn đang gửi HTML cho các phần của trang cần trình bày và bạn đang gửi JSON cho tình huống bạn cần dữ liệu ...
... Và để giải nén chúng, phương thức chuỗi con JS sẽ thực hiện thủ thuật, tôi cho rằng ;-)