Saya sedang mengembangkan aplikasi web dan saat ini saya telah menulis seluruh situs web dalam html / js / css dan di backend saya memiliki servlets yang meng-host beberapa layanan RESTFUL. Semua logika presentasi dilakukan melalui mendapatkan objek json dan mengubah tampilan melalui javascript.
Aplikasi ini pada dasarnya adalah mesin pencari, tetapi akan memiliki akun pengguna dengan peran yang berbeda.
Saya telah meneliti beberapa kerangka kerja seperti Play dan Spring. Saya cukup baru dalam pengembangan web, jadi saya bertanya-tanya apa keuntungan menggunakan rendering halaman sisi server?
Apakah itu: Kecepatan? Pengembangan dan alur kerja yang lebih mudah? Akses ke perpustakaan yang ada? Lebih? Semua yang di atas?
javascript
web-applications
frameworks
pengguna1303881
sumber
sumber
Jawaban:
Rendering HTML sisi server:
* Ketika persyaratan UI cocok dengan kerangka kerja dengan baik.
Rendering HTML sisi klien:
** Ketika UI sebagian besar khusus, dengan interaksi yang lebih menarik. Juga, saya menemukan pengkodean di browser dengan kode yang ditafsirkan terasa lebih cepat daripada menunggu kompilasi dan restart server.
Anda mungkin juga mempertimbangkan model hybrid dengan implementasi backend ringan menggunakan sistem templating front-end / back-end seperti kumis .
sumber
generasi HTML sisi server:
generasi HTML sisi klien:
Perhatikan, bahwa generasi sisi klien adalah cara yang dilakukan dalam kasus situs seluler yang sukses, karena tampaknya itu lebih efisien dengan browser modern (browser berbasis WebKit memiliki sekitar 70-80% pasar ponsel).
LinkedIn memiliki artikel tentang keuntungan pendekatan sisi klien menggunakan dust.js sebagai contoh: "Membiarkan JSP di debu: memindahkan LinkedIn ke templat sisi klien dust.js"
sumber
Itu tergantung pada apa kebutuhan Anda. Jika Anda membutuhkan kinerja tinggi, solusi latensi rendah yang bergantung pada banyak tugas kecil, Anda dapat menggunakan struktur yang serupa dengan yang Anda gambarkan. Solusi paling umum, di Java, PHP, dan C # tidak default untuk ini.
Sebagian besar aplikasi web sangat bergantung pada database - kebanyakan dari mereka sangat banyak sehingga halaman tidak dapat membuat tanpa setidaknya satu panggilan. Jelas Anda tidak ingin mengekspos database Anda secara publik, karena beberapa alasan:
Jadi, ketika Anda membutuhkan database, Anda menggunakan bahasa yang cocok dengan mereka seperti Java, C #, PHP, dll. Cara termudah untuk menghasilkan halaman ternyata adalah sebagai berikut: Anda menggunakan bahasa templating (paling terkenal PHP, tetapi JSP dan ASP adalah dua bahasa lain yang sangat umum) untuk membangun halaman. Bahasa ini menyediakan konstruksi yang memanggil ke modul lain. Dalam PHP ini biasanya di halaman atau dalam file PHP lain, menggunakan pola MVC. Di JSP Anda menggunakan scriptlets atau Bahasa Ekspresi JSP. Modul-modul lain ini dapat bekerja keras untuk menyambung ke DB, melakukan logika, dan mengembalikan nilai ke lapisan tampilan Anda. Hasil akhirnya adalah halaman HTML yang dihasilkan, diberikan di server dan dikirim ke klien.
Ketika database Anda berada di jaringan yang sama dengan renderer halaman Anda, Anda juga mendapatkan kinerja yang lebih baik. Klien hanya perlu melakukan satu permintaan dan menerima halaman - Anda mungkin perlu melakukan 10-15 permintaan DB sebelum Anda memiliki semua informasi yang dibutuhkan pengguna. Latensi milidetik di jaringan Anda akan menjadi detik hingga menit jika klien harus melakukan semuanya.
Ketika sistem tumbuh lebih besar, pemisahan masalah dan kompetensi inti menjadi sangat penting. HTML bagus untuk tampilan. Javascript bagus untuk konten dinamis. SQL sangat bagus untuk menanyakan basis data, dan bahasa lainnya bagus dalam logika bisnis. Tugas kita sebagai pengembang adalah menggunakan semua alat yang tersedia untuk membangun sistem yang dapat dipelihara. Kemudahan pengembangan adalah bagian besar dari sistem yang baik. Dalam pikiran saya, ini hampir sama pentingnya dengan kinerja dan kegunaan. Sistem hebat berkembang seiring waktu. Sistem yang buruk ditulis dengan buruk sejak awal dan tidak pernah diperbaiki.
sumber
you can't write SQL in Javascript
Betulkah?! Pernahkah Anda melihat pertanyaan StackOverflow untuk Javascript? Sayangnya saya mohon untuk berbeda. Memang itu adalah hal terburuk yang dapat Anda lakukan dalam kode klien tetapi ...Klien seluler biasanya dibatasi oleh daya, bandwidth, dan memori. Mungkin lebih baik membuat halaman untuk mereka di server.
Untuk klien desktop, Anda dapat mempertimbangkan mengirim js + json untuk merender halaman pada klien, menjadikannya dapat diperbarui secara dinamis, dll.
sumber
Satu keuntungan besar dari rendering sisi server adalah aksesibilitas - aplikasi berbasis javascript masih menjadi masalah besar bagi orang-orang yang tidak memiliki penglihatan. Itu dan ada orang buta ini bernama "googlebot" yang mungkin ingin Anda penuhi. Dia juga tidak melakukan javascript dengan baik.
sumber