Tôi đã làm lập trình web từ lâu rồi và ở đâu đó, tôi không biết tại sao chúng ta lại làm những gì chúng ta đang làm hôm nay (hoặc làm thế nào chúng ta đến để làm mọi thứ theo cách này)?
Tôi đã bắt đầu với việc phát triển web ASP cơ bản, và từ rất sớm, logic hiển thị và kinh doanh đã được trộn lẫn trên trang. Sự phát triển phía máy khách rất đa dạng (VBScript, các hương vị JavaScript khác nhau) và chúng tôi đã có nhiều cảnh báo về các xác nhận phía máy chủ (và vì vậy tôi tránh xa logic phía máy khách).
Sau đó tôi chuyển đến ColdFusion một lúc. ColdFusion có lẽ là khung phát triển web đầu tiên tách biệt logic hiển thị và logic kinh doanh bằng cách sử dụng các thẻ của họ. Nó có vẻ rất rõ ràng đối với tôi, nhưng rất dài dòng và ColdFusion không có nhu cầu thị trường cao, và vì vậy tôi đã tiếp tục.
Sau đó tôi đã nhảy vào đoàn xe ASP.NET và bắt đầu sử dụng phương pháp MVC của họ. Tôi cũng nhận ra Java dường như là một ngôn ngữ tháp ngà của các hệ thống doanh nghiệp và cũng đã thử cách tiếp cận MVC của họ. Sau đó, ASP.NET đã phát triển mẫu thiết kế MVVM này và Java (chính xác là J2EE hoặc JEE) cũng vật lộn và đưa ra các cách tiếp cận MVC2.
Nhưng ngày nay, những gì tôi đã phát hiện ra là lập trình phụ trợ không phải là nơi hứng thú và tiến bộ nữa. Ngoài ra, các thực tiễn MVC dựa trên máy chủ dường như đã lỗi thời (mọi người có thực sự sử dụng JSTL nữa không?). Ngày nay, trong hầu hết các dự án mà tôi đang thực hiện, tôi phát hiện ra rằng các khung JavaScript và phát triển phía máy khách là nơi tất cả các tiến trình thú vị và sáng tạo đang được thực hiện.
Tại sao sự chuyển động này từ máy chủ sang phát triển phía khách hàng diễn ra? Tôi đã thực hiện một số dòng đơn giản của một trong các dự án JEE của tôi và có nhiều dòng mã hơn trong JavaScript so với Java (không bao gồm các thư viện của bên thứ ba). Tôi thấy rằng hầu hết phát triển phụ trợ sử dụng các ngôn ngữ lập trình như Java hoặc C # chỉ đơn giản là để tạo giao diện giống như REST và tất cả các nỗ lực hiển thị, trực quan hóa, nhập / xuất dữ liệu, tương tác của người dùng, v.v ... đang được giải quyết thông qua khung phía khách hàng như Angular, Backbone, Ember, Knockout, v.v ...
Trong thời kỳ tiền jQuery, tôi đã thấy rất nhiều sơ đồ trong đó có một đường khái niệm rõ ràng giữa M, V và C trong MVC trong phát triển n-tier. Post-jQuery, những dòng này được vẽ ở đâu? Có vẻ như MVC và MVVM đều có mã JavaScript, phía máy khách.
Điều tôi muốn biết là, tại sao chúng ta lại thực hiện một quá trình chuyển đổi như vậy (từ sự nhấn mạnh của lập trình phía máy chủ sang phía máy khách, từ việc ưu tiên các ngôn ngữ được biên dịch sang các ngôn ngữ kịch bản, từ mệnh lệnh sang lập trình chức năng, tất cả những điều này dường như đã xảy ra đồng thời ) và những vấn đề nào đã làm quá trình chuyển đổi / thay đổi này giải quyết?