WEB技术随着互联网的崛起而崛起,又随着移动互联网的发展而呈现更加多样化的趋势。
- 黑暗时代:大约在2005年以前,所谓的WEB开发主要还是美工的活,HTML/CSS占主导,Dreamwaver做为页面设计三剑客之一,成为大多数WEB程序员的必备利器。Javascript能不用就不用,能少用就少用,浏览器只考虑IE。那时候的Javascript显得非常异类、原型继承、语法灵活多变、调试困难(还记得在IE中调试Javascript的痛苦经历吗?),一般程序员都不愿意干前端的活。好不容易出来一个Bindows,被许多程序员捧为神器。但稍加试用就发现慢如蜗牛,问题不断,根本不能实用。由此可见那时的浏览器也不重视Javascript引擎的优化。那是WEB开发的黑暗时代。
- 文艺复兴:到了2005年左右,大家慢慢也都注重用户体验了,AJAX技术也日益普及了,WEB2.0的提法也甚嚣尘上,自己的应用若不贴上WEB2.0的标签都不好意思和人打招呼了。那时候的Java社区在Struts/Spring/Hibernate的带领下风风火火、异常活跃。此时,Ruby On Rails出现了!其约定优先的理念,简直让SSH模式下繁杂的XML配置方式无地自容。在新技术新理念层出不穷的大背景下,jQuery于2006年横空出世。jQuery的出现,彻底终结了WEB开发的黑暗时代,迎来了WEB领域的“文艺复兴”。Ajax技术的广泛运用、WEB标准化的逐步推进、浏览器市场的缓慢变化,等等,都是这种“复兴”的佐证。
- 百花齐放:如今,在距离Apple于2007年推出首部IPhone以来,时间已过去6年多,这正是移动互联网从起步到高速发展的年份。对用户体验的极致追求,导致WEB技术发生了更加深刻的变化。Javascript走向服务端成就了node.js,而Flush技术由于商业和技术的原因似乎正逐步走向衰落,各种基于Javascipt的MVC框架层出不穷,流式布局、响应式布局、自适应、拟物化设计、扁平化设计等概念不断涌现,现今正是WEB领域百花齐放的时代。
现在做WEB开发,也如同做Java服务端开发一样,要在众多的基础库、开发框架当中做出合适的选择:
- jQuery:以简洁的链式操作而闻名,封装了底层浏览器的API,屏蔽浏览器实现的差异,是当前最流行的基础库;不过随着HTML5标准逐渐被各大浏览器厂商所接受,jQuery的作用也大打折扣,其发行包大小也常常为人们所诟病。
- mootools:当年与jQuery一较高下的框架有prototype.js和mootools。当年prototype得到ruby社区的大力支持,一度与jQuery较量得不相上下。而mootools则得到Java阵营的支持,虽然比不上前两者,但由于其api设计比较符合java程序员的习惯,因此也发展得风生水起。前段时间看到prototype作者撰文承认了prototype的失败,如今在底层库的选择上还是jQuery一家独大的局面;
- dojo:dojo是类似于java swing的完整框架,既包含了基础库,也包含了大量的UI组件。尽管dojo得到了struts2的大力支持,但还是无法扭转其江湖地位;
- extjs:类似当年的Bindows,在WEB中实现类似桌面程序的效果。当年Bindows因为性能问题惨死沙场,只能说它生不逢时。不过extjs如今的命运也让人堪忧,一成不变的界面风格和操作模式其实是违背WEB千变万化的本质特征的;
- easyui:基于jQuery的声明式UI组件库。所谓声明式组件,是指不需要象传统桌面程序一样通过写代码的方式创建和设置组件,只需要遵循最原始的HTML声明式理念,在原始HTML Tag上设置属性就能得到想要的效果;类似easyui的国产框架DWZ也是类似思路;
- backbone:基于Javascript的MVC框架,MVC理念在浏览器中的完整实现。可以想见,这类框架在处理客户端多视图数据同步方面具有很大的优势,可以大大简化客户端展现及交互逻辑的开发过程;
选择上述某一种或某几种基础库或开发框架,就意味着选择了一种开发模式。从开发模式的角度我们可简单总结一下:
- 传统的HTML+CSS+JS模式:这种模式下,开发人员需要编写大量的HTML代码,用于实现页面的展现逻辑,编写JS代码用于实现交互逻辑。这是最传统的开发方式,同时也是运用最广泛的开发方式,不论企业级管理系统还是电商类网站、拟或手机WEB应用,都可以采用这种方式实现;该方式的缺点是实现单页面应用或复杂交互应用时JS代码量较大;
- 桌面应用开发模式:如EXTJS,页面全部使用JS来实现,开发人员基本不需要编写HTML代码,大量的展现逻辑和交互逻辑使用JS代码完成。这种方式用于实现单页面应用非常方便;但要求开发人员对JS及开发框架的组件库有深入了解;思维模式上要适应基于组件的事件机制;
- 声明式UI开发模式:如easyui及国产DWZ,页面的展现逻辑如同第一种模式一样使用HTML实现,但是相比第一种模式,这种模式对组件的抽象做得更好,部分传统模式下用JS实现的展现逻辑甚至是交互逻辑也可以使用声明方式实现。可以说这是对第一种模式的增强;
- 客户端MVC开发模式:如backbone,这种模式与桌面模式相似,通过大量的JS代码实现页面的展现和交互逻辑,但通过在客户端维护数据模型及其状态,再运用视图与模型的绑定机制,可以大大减少JS代码量;
第一种模式与第三模式相似,都是以HTML代码实现展现逻辑、以JS代码实现交互逻辑,只是第三种模式通过更多的抽象组件,尽量使用HTML实现尽可能多的展现和交互逻辑;第二种模式与第四种模式类似,都是偏重于尽量使用JS实现展现逻辑和交互逻辑,HTML仅仅做为页面布局或页面容器。相对来讲,第二种模式偏重于使用JS实现界面视图的组装,而第四模式偏重于使用JS实现完整的MVC机制,在backbone中,视图也通常是使用基于HTML代码片断的模板方式来实现。
由于第三种模式是第一种模式的增强,因此在实际项目中可以尽量选择第三种开发模式;第二种模式相比第一种和第三种模式来讲,主要是开发方式的不同,前者侧重于JS,后两者侧重于HTML,除此之外,两者的应用场景和应用范围都很相似。
尽管第四模式与第二种模式一样也是偏重于使用JS实现页面逻辑,但由于其强大的MVC机制,因此它与第二种模式有着本质的不同。试想对于gmail之类的应用,如果客户端底层没有维护一套邮件的数据模型的话,要单纯使用前面三种方式实现当前gmail的页面交互效果将是非常困难的。
总之,对于WEB开发模式的选择,现阶段个人建议优先选择第三种模式。如果应用交互非常复杂,或者需要实现更好的交互体验(比如支持本地存储、undo、redo等),而导致大量的JS代码的话,则可以考虑使用第四模式。
===========================================
很久没有做前端开发,不知道上面总结得对不对,请大家拍砖。
相关推荐
在基于Java的Web开发中,有三个核心组件:Servlet、JSP和JavaServer Faces (JSF)。 - Servlet:Servlet是Java编写的服务器端程序,主要功能是处理客户端的请求,并返回响应。Servlet可以扩展Web服务器的功能,处理...
### 浅析MVC模式在WEB开发中的应用 #### 引言 随着互联网技术的快速发展,Web应用程序变得越来越复杂和庞大。传统的嵌套和面向过程的开发方式已无法满足当前项目的需求。在这种背景下,MVC(Model-View-Controller...
【摘要】 随着Web技术的不断进步和用户需求的日益复杂,动态网页的开发变得越来越具有挑战性。传统的面向过程的开发方法已经无法满足大规模Web项目...随着技术的不断演进,MVC模式将继续在Web开发领域发挥其重要作用。
MVC模式在WEB开发中的应用 MVC(Model-View-Controller)是一种软件架构模式,它广泛应用于WEB开发中,帮助开发者更好地组织和管理复杂的WEB项目。MVC模式的核心思想是将应用程序分为三个基本部分:模型(Model)、...
### 设计模式的理解浅析 #### 单例模式在共享数据中的应用 单例模式是一种常用的软件设计模式,它的核心在于确保某个类只有一个实例,并提供一个全局访问点。这种模式非常适用于那些在整个项目中需要一个共享访问...
【基于Web的数据库技术浅析】 随着互联网技术的迅速发展,Web数据库已经成为处理和存储数据的核心技术。在本文中,作者聂晶探讨了基于Web的数据库技术,特别是B/S(Browser/Server)模式,它是数据库技术与Web技术...
Struts是很早就将MVC模式引入到Web开发领域的框架之一。Struts1诞生至今已经有近十年的光景,仍然有许多企业在使用Struts1来开发,虽然其中有许多遗留项目,但不得不说Struts1已经深入人心。Struts迫使开发人员按照...
Struts框架是基于MVC模式的开源框架,它能够有效实现系统开发中逻辑层和表示层的分离,促使逻辑层和表示层的彼此独立,从而大大减轻多层Web构建过程中的负担,提高了系统开发和应用的效率。 Struts框架结构主要由...
在使用Comet技术开发Java Web实时系统时,首先需要设计一个能够处理长连接的服务器架构,这可能涉及到对HTTP服务器的扩展或选择支持此类特性的Web框架。其次,需要编写能够处理事件驱动的服务器端代码,当有新数据...
在Java Web开发中,Comet技术主要采用两种实现方式: 1. 长轮询(Long-polling):客户端发起请求,服务器接收到请求后并不立即响应,而是保持连接状态,直到有新的数据或达到超时时间才返回响应。客户端收到响应后...
综上所述,Comet技术为Java Web实时系统开发提供了新的思路,通过服务器推送的方式解决了传统HTTP协议的限制,提升了用户体验。然而,实际应用中还需要结合具体场景和需求,综合权衡性能、兼容性和安全性等因素,...
### 浅析Web暴力猜解 #### 一、前言 随着互联网的快速发展,Web应用程序已成为企业业务的重要组成部分。然而,这也使得Web应用程序成为黑客攻击的主要目标之一。针对Web应用程序的攻击手段众多,其中暴力猜解...
【标题】:“浅析WebWork” 【正文】: WebWork是一个历史悠久的Java Web应用程序框架,它在早期的Web开发中...虽然它可能不是最新的选择,但对于理解Web开发的底层机制和MVC模式,WebWork仍然是一份宝贵的参考资料。
在Web开发领域,生成图形报表是一项重要的任务,它能够帮助用户直观地理解复杂的数据。本篇文章将深入探讨如何使用Java技术栈,特别是Struts和JFreeChart库来实现Web图形报表。Struts作为MVC框架,是Java Web开发中...
本文将深入浅析ASP.NET的核心概念和技术,帮助初学者掌握这一强大的开发平台。 1. **基础概念** - **Web Forms**: ASP.NET Web Forms提供了一种通过拖放控件来构建网页的方式,类似于传统的Windows编程模型。 - *...
随着信息技术的飞速发展,传统的基于特定系统和环境的开发模式已无法满足日益复杂的业务需求。WebService技术应运而生,它为异构系统间的交互提供了通用且平台无关的解决方案。WebService的核心思想是通过XML、SOAP...