我已经从事Web编程很长时间了,在某个地方,我无法知道为什么我们现在正在做我们所做的事情(或者我们是如何以这种方式来做事情的)?
我从基本的ASP Web开发开始,很早就在页面上混合了显示和业务逻辑。客户端开发之间千差万别(VBScript,不同的JavaScript风格),并且我们对服务器端验证有很多警告(因此我远离客户端逻辑)。
然后我搬到了ColdFusion了一段时间。ColdFusion可能是第一个使用其标签将显示和业务逻辑分开的Web开发框架。对我来说似乎很清楚,但非常冗长,并且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之前的时代,我看到了很多图,其中n层开发中的MVC中的M,V和C之间存在清晰的概念性界线。jQuery后,这些线在哪里绘制?看起来MVC和MVVM都可以在客户端的JavaScript代码中找到。
我想知道的是,为什么我们要进行这样的转换(从服务器端编程的重点到客户端的方方面面,从偏爱编译语言到脚本语言,从命令式到功能性编程,所有这些似乎都是同时发生的) ),此过渡/转移解决了哪些问题?