Saya agak di kedua sisi, sebenarnya:
- Ketika yang saya butuhkan di sisi javascript adalah data , saya menggunakan JSON
- Ketika apa yang saya butuhkan di sisi javascript adalah presentasi di mana saya tidak akan melakukan perhitungan, saya biasanya menggunakan HTML
Keuntungan utama menggunakan HTML adalah ketika Anda ingin mengganti sebagian penuh halaman Anda dengan apa yang kembali dari permintaan Ajax:
- Membangun kembali sebagian halaman di JS (cukup) sulit
- Anda mungkin sudah memiliki beberapa mesin templating di sisi server, yang digunakan untuk menghasilkan halaman di tempat pertama ... Mengapa tidak menggunakannya kembali?
Saya biasanya tidak benar-benar mempertimbangkan sisi "kinerja", paling tidak di server:
- Di server, menghasilkan sebagian dari HTML atau JSON mungkin tidak akan membuat banyak perbedaan
- Tentang ukuran barang yang melewati jaringan: well, Anda mungkin tidak menggunakan ratusan KB data / html ... Menggunakan gzip pada apa pun yang Anda transfer adalah apa yang akan membuat perbedaan terbesar (tidak memilih antara HTML dan JSON)
- Namun, satu hal yang dapat dipertimbangkan adalah sumber daya apa yang Anda perlukan pada klien untuk membuat ulang HTML (atau struktur DOM) dari data JSON ... bandingkan dengan mendorong sebagian HTML ke halaman; -)
Akhirnya, satu hal yang jelas penting:
- Berapa lama waktu yang Anda butuhkan untuk mengembangkan sistem baru yang akan mengirim data sebagai kode JSON + yang diperlukan JS untuk menyuntikkannya sebagai HTML ke halaman?
- Berapa lama untuk mengembalikan HTML? Dan berapa lama jika Anda dapat menggunakan kembali beberapa kode sisi server yang sudah ada?
Dan untuk menjawab jawaban lain: jika Anda perlu memperbarui lebih dari satu bagian halaman, masih ada solusi / retasan untuk mengirim semua bagian di dalam satu string besar yang mengelompokkan beberapa bagian HTML, dan mengekstrak bagian yang relevan di JS.
Misalnya, Anda dapat mengembalikan beberapa string yang terlihat seperti ini:
<!-- 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 -->
Itu tidak terlihat benar-benar bagus, tapi itu pasti berguna (saya sudah menggunakannya beberapa kali, kebanyakan ketika data HTML terlalu besar untuk dienkapsulasi ke dalam JSON) : Anda mengirim HTML untuk bagian halaman yang butuh presentasi, dan Anda mengirim JSON untuk situasi yang Anda butuhkan data ...
... Dan untuk mengekstraknya, metode substring JS akan melakukan trik, saya kira ;-)