Alasannya adalah stabilitas .
Di sisi server, saya dapat memilih komponen yang stabil. Biasanya ini berarti saya memilih Java dan banyak perpustakaan yang dipilih dengan sangat hati-hati seperti FreeMarker. Tak perlu dikatakan, setiap perpustakaan selain dari perpustakaan standar Jawa diperlakukan sebagai sekali pakai, jadi saya mengakses perpustakaan eksternal melalui pembungkus buatan sendiri. Ini berarti saya dapat dengan mudah berubah dari satu perpustakaan ke perpustakaan lain jika persyaratan muncul.
Setiap kali saya memperbarui Java ke versi baru, biasanya berfungsi dengan baik karena Java adalah komponen yang sangat stabil bahkan di seluruh pembaruan versi utama. Dan juga, setiap server yang saya miliki menjalankan versi Java yang sama. Tidak setiap klien menjalankan implementasi JavaScript yang sama.
Di sisi klien, saya tidak bisa memilih komponen yang stabil. Pembuat browser akan memaksa saya untuk memilih JavaScript, bahasa yang saya khususnya tidak suka, tetapi saya terpaksa menggunakannya. (Dan jangan beri tahu saya tentang bahasa yang dikompilasi dengan JavaScript, mereka mengerikan!) Implementasi JavaScript dari setiap browser berbeda. Ini berarti total untuk menguji produk saya dengan setiap versi browser yang didukung.
Solusi saya? Saya melakukan pemrosesan sebanyak yang saya bisa di sisi server, dan sisi klien hanya pembungkus ringan yang mengirim data ke server dan menerima data dari server dalam bentuk fragmen JSON dan HTML. Hindari XML; gunakan JSON sebagai gantinya.
Saya tidak melakukan templating sisi klien; Saya membuat konten di server ke fragmen HTML yang kemudian saya tetapkan menggunakan .innerHTML
atribut ke berbagai elemen placeholder di sisi klien. Ini menjaga tumpukan teknologi sesederhana mungkin, karena saya tidak perlu dua mesin templat (satu Java dan satu JavaScript).
Kekurangannya jelas adalah latensi kecepatan cahaya; setengah detik dari latensi bukan tidak biasa antar benua.
Pertimbangkan bahwa klien Anda hari ini mungkin smartphone. Smartphone memiliki masa pakai baterai terbatas, jadi jika Anda melakukan perhitungan yang berat, lebih baik untuk membebani ke server Anda. Namun, hal-hal sederhana dapat lebih hemat energi ketika dilakukan di sisi klien karena Anda dapat menghindari akses radio. Tetapi argumen utama, stabilitas, mungkin berarti sebenarnya masuk akal untuk membongkar bahkan perhitungan sederhana ke server.
Sebagai tambahan, sebagaimana telah diamati dalam beberapa jawaban, Anda juga mendapatkan keamanan . Jika logika aplikasi sepenuhnya di sisi klien, seseorang dapat misalnya menetapkan harga untuk hal apa pun yang akan mereka beli dari toko web online Anda.