Я давно занимаюсь веб-программированием, и где-то я забыл, почему мы делаем то, что делаем сегодня (или как мы поступили так)?
Я начал с базовой веб-разработки на ASP, и очень рано, на странице были смешаны отображение и бизнес-логика. Разработка на стороне клиента сильно различалась (VBScript, различные варианты JavaScript), и у нас было много предупреждений о проверках на стороне сервера (и поэтому я держался в стороне от логики на стороне клиента).
Затем я переехал в ColdFusion на некоторое время. ColdFusion был, вероятно, первой средой веб-разработки, которая разделяла отображение и бизнес-логику с помощью их тегов. Мне это показалось очень ясным, но очень многословным, и ColdFusion не пользовался высоким рыночным спросом, и я пошел дальше.
Затем я запрыгнул на ленточный универсал ASP.NET и начал использовать их подход MVC. Я также понял, что Java, похоже, является языком слоновой кости корпоративных систем, а также попробовал их подход MVC. Позже ASP.NET разработал этот шаблон проектирования MVVM, и Java (точнее, J2EE или JEE) также боролась и выдвинула свои подходы MVC2.
Но сегодня я обнаружил, что бэкэнд-программирование - это уже не то, где волнение и прогресс. Кроме того, практика MVC на стороне сервера, кажется, устарела (люди действительно больше используют JSTL?). Сегодня в большинстве проектов, над которыми я работаю, я обнаружил, что JavaScript-фреймворки и разработка на стороне клиента - это то место, где совершаются все захватывающие и инновационные разработки.
Почему произошло это движение от разработки сервера к разработке на стороне клиента? Я сделал простой подсчет строк в одном из моих проектов JEE, и в JavaScript больше строк кода, чем в Java (исключая сторонние библиотеки). Я обнаружил, что большинство внутренних разработок с использованием языков программирования, таких как Java или C #, просто для создания REST-подобного интерфейса, и что все тяжелые усилия по отображению, визуализации, вводу / выводу данных, взаимодействию с пользователем и т. Д ... решаются через клиентскую среду, такую как Angular, Backbone, Ember, Knockout и т. д.
В эпоху до jQuery я видел множество диаграмм, в которых была четкая, концептуальная грань между M, V и C в MVC в n-уровневой разработке. Post-jQuery, где нарисованы эти линии? Кажется, что MVC и MVVM все в порядке в коде JavaScript, на стороне клиента.
Я хочу знать, почему мы осуществили такой переход (от упора серверного программирования к клиентскому, от предпочтения скомпилированных языков к языкам сценариев, от императивного к функциональному программированию, все это, кажется, произошло одновременно ) а какие проблемы решил этот переход / смещение?