即使我站在Python方面,我也有多年这个问题。对于这种现象,我没有一个单一的解释,但这是我对这个问题的看法:
Web框架必须使用客户端服务器方式处理XMLish标记语言-HTML,这是当前Web三合一HTML-CSS-JavaScript的一部分。它表示三种语言,它们彼此交互,一个浏览器DOM和执行模型(和安全模型)。实际上,每个功能(“模块”)的所有三种语言都应具有其代码。除此之外,jQuery的选择器语言正在成为另一种需要关注的语言。
HTML + CSS缺乏用于放置对象的直观且数学上合理的模型。甚至Tcl / Tk在定义几何图形管理器方面也是恕我直言的。这阻止了程序员严格地定义HTML呈现,而是依靠运气:“也许这个div在大多数浏览器中大部分时间都可以工作”。但是在这方面也有一些积极的发展,例如HTML5和Twitter Bootstrap。
Web技术已经有机地增长了,框架也随之发展了,因此它们的形状不一定是优雅的。这意味着程序员应该记住那些次优的API,将不推荐使用的API等。
Web浏览器确实仍然存在一些不兼容性,并且为Web框架增加了不必要的复杂性
整体架构一团糟。这是后端和前端的分离思想,它们与后端的请求/响应以及前端的数据驱动的渲染捆绑在一起。执行顺序不是很明确(同步需要努力),并且需要放置样式,将脚本放置到适当的位置(几乎所有js脚本都需要放置在body标签的末尾,依此类推)。缓存是又一个方面,从后端到代理再到前端。而且我什至不提表格处理!
Web框架必须通过添加许多概念和处理管道来应对其中的大多数复杂性。
在Web行业中,通常将图形设计人员,Web设计人员/ Web程序员和后端程序员之间的工作划分为最少的角色集。前两个不一定具有编程技能,因此它们需要不同的抽象和工具,并且框架也应为它们提供便利
总而言之,Web框架试图抽象出很多复杂性(本身就越来越复杂),但是由于标准和其他活动部件的快速发展,很难实现。编程语言更加成熟,因为不使用新功能通常不是问题。
我认为,只有在GUI标准到位(覆盖不同的操作模式,例如移动设备)并且基础技术足够稳定之后,才能实现方便的Web框架。
Web框架缺乏简单的构造,因为Web技术领域没有这种东西。较低级别的抽象必然会泄漏到较高级别。