Saya telah melakukan pemrograman web untuk waktu yang lama sekarang, dan di suatu tempat, saya kehilangan jejak mengapa kita melakukan apa yang kita lakukan hari ini (atau bagaimana kita melakukan hal-hal seperti ini)?
Saya mulai dengan pengembangan web ASP dasar, dan sangat awal, tampilan dan logika bisnis dicampur pada halaman. Pengembangan sisi klien sangat bervariasi (VBScript, berbagai rasa JavaScript), dan kami memiliki banyak peringatan tentang validasi sisi-server (dan jadi saya menjauh dari logika sisi klien).
Saya kemudian pindah ke ColdFusion untuk sementara waktu. ColdFusion mungkin merupakan kerangka pengembangan web pertama yang memisahkan tampilan dan logika bisnis menggunakan tag mereka. Tampaknya sangat jelas bagi saya, tetapi sangat bertele-tele, dan ColdFusion tidak dalam permintaan pasar yang tinggi, jadi saya pindah.
Saya kemudian melompat pada kereta band ASP.NET dan mulai menggunakan pendekatan MVC mereka. Saya juga menyadari bahwa Java tampaknya merupakan bahasa menara gading dari sistem perusahaan, dan juga mencoba pendekatan MVC mereka. Kemudian, ASP.NET mengembangkan pola desain MVVM ini, dan Java (tepatnya, J2EE atau JEE) juga berjuang dan keluar dengan pendekatan MVC2-nya.
Tetapi hari ini, apa yang saya temukan adalah bahwa pemrograman backend bukan lagi tempat yang menyenangkan dan maju. Juga, praktik MVC berbasis sisi server tampaknya sudah usang (apakah orang benar-benar menggunakan JSTL lagi?). Hari ini, di sebagian besar proyek yang saya jalani, saya menemukan bahwa kerangka kerja JavaScript dan pengembangan sisi klien adalah tempat semua kemajuan menarik dan inovatif sedang dibuat.
Mengapa perpindahan dari server ke pengembangan sisi klien ini terjadi? Saya melakukan penghitungan baris sederhana dari salah satu proyek JEE saya, dan ada lebih banyak baris kode dalam JavaScript daripada Java (tidak termasuk perpustakaan pihak ketiga). Saya menemukan bahwa sebagian besar pengembangan backend menggunakan bahasa pemrograman seperti Java atau C # hanya untuk menghasilkan antarmuka seperti REST, dan bahwa semua upaya keras tampilan, visualisasi, input / output data, interaksi pengguna, dll ... sedang ditangani melalui kerangka sisi klien seperti Angular, Backbone, Ember, Knockout, dll ...
Selama era pra-jQuery, saya melihat banyak diagram di mana ada garis konseptual yang jelas antara M, V, dan C dalam MVC dalam pengembangan n-tier. Post-jQuery, di mana garis-garis ini digambar? Tampaknya MVC dan MVVM semuanya ada di sana dalam kode JavaScript, sisi klien.
Yang ingin saya ketahui adalah, mengapa kita melakukan transisi semacam itu (dari penekanan pemrograman sisi server ke sisi klien, dari mendukung bahasa yang dikompilasi ke bahasa scripting, dari imperatif ke pemrograman fungsional, semua ini tampaknya telah terjadi secara bersamaan ) dan masalah apa yang dipecahkan oleh transisi / pergeseran ini?