举个例子,对于广告系统的来说, 我们先不管一些job,CACHE,config ... 这些优化,些框架和分层可以是这样的,
MVC的技术选型:
前端开发刚兴起的阶段,前端开发人员的工作经常穿插在后端开发过程中担任辅助作用的,随着业务越来越复杂,前端必须有自己的开发框架和流程,使得后端专注于服务类的开发,前端专注于与用户交互类的开发。
WEB前端从概念上划分为三个层次:结构、表现、和行为。三层相对独立,互不影响。在物理上层面上分别对应HTML、CSS、JS三种不同的的文件格式。
好的层次划分对前端的开发也很关键。显示内容问题的唯一来源应该是html文件定义的,内容展示问题的唯一来源应该是CSS文件定义的,行为问题的唯一来源应该是javascript文件定义的,各司其职相互独立。但是他们是相关的,因为行为和样式无法与结构分离,必须写在同一个文件里。这种情况下,首先还是你要把行为和样式从html标签中分开,然后在html文件中引入。
实际的开发结构是这样的:
前端开发的核心是HTML + CSS + JavaScript。本质上它们构成一个MVC框架,即HTML作为信息模型(Model),CSS控制样式(View),JavaScript负责调度数据和实现某种展现逻辑(Controller)。
在java领域,表现层技术主要有三种:jsp、freemarker、velocity。
它是在传统的网页HTML文件(.htm,.html)中插入Java程序段(Scriptlet)和JSP标记(tag),它实现Html语法中的java扩展(以 <%, %>形式)。从而形成JSP文件,后缀名为(.jsp)。因为java具有跨平台特点, 用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。JSP与Servlet一样,是在服务器端执行的,最终都要变.class文件,通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。
优点:
缺点:
它生成静态页面,首先需要使用自己定义的模板页面,这个模板页面可以是最最普通的html,也可以是嵌套freemarker中的 取值表达式, 标签或者自定义标签等等,然后后台读取这个模板页面,解析其中的标签完成相对应的操作, 然后采用键值对的方式传递参数替换模板中的的取值表达式,做完之后 根据配置的路径生成一个新的html页面, 以达到静态化访问的目的。
模板+数据模型=输出,模板只负责数据在页面中的表现,不涉及任何的逻辑代码,而所有的逻辑都是由数据模型来处理的。用户最终看到的输出是模板和数据模型合并后创建的。
FreeMarker与Web容器无关,即在Web运行时,它并不知道Servlet或者其他。
优点:
缺点:
使用FreeMarker后,作为界面开发人员,只专心创建HTML文件、图像以及Web页面的其他可视化方面,不用理会数据;而程序开发人员则专注于系统实现,负责为页面准备要显示的数据。
还有一些像velocity这样较早出现的用于代替jsp的模板语言 ... ...
结构搭建之后,就是为他们添加样式表属性。它实现的是页面内容和现实样式分离,所有的CSS都是非必需的,就算无法应用CSS或CSS冲突,网页也能够正常访问。
为了管理的方便,可以将不同样式进行拆分,比如可以拆分为全局样式,结构布局样式,色彩样式,文字样式和重置样式。css在开发时代码采用了规范的形式,比如有注释,缩进等,这样,这些文件的大小比较大,为了减少网络流量,提高网页的下载速度,一般发布时需要对javascript和css进行压缩处理,我们将样式文件进行合并压缩,目的是减少与服务器交互的时间和次数。如http://www.jb51.net/tools/cssyasuo.shtml可以在线进行压缩。
样式混合使用选择:
常见的也是最有名的javascript 框架,其实准确来说应该是库:
(http://www.ibm.com/developerworks/cn/web/1404_wangfx_jsframeworks/)
jQuery 是目前用的最多的前端 JAVASCRIPT 类库,它是比较轻量级的类库,对 DOM 的操作也比较方便到位,支持的效果和控件也很多。同时,基于 jQuery 有很多扩展项目,包括 jQuery UI(jQuery 支持的一些控件和效果框架)、jQuery Mobile(移动端的 jQuery 框架)、QUnit(JavaScript 的测试框架)。这些补充使得 jQuery 框架更加完整,而且这些扩展与目前的框架基本都是兼容的,可以交叉使用,使得前端开发更加丰富。
相比 jQuery,Ext JS 更重量级,有几个兆的文件,使得 Ext 在开发中成为的弊端和累赘。但是,另一方面,在 Ext JS 庞大的文件背后是 Ext JS 强大的功能。Ext JS 的控件和功能可以说强大和华丽到的程度。图表、菜单、特效,Ext JS 的控件库非常丰富,同时它的交互也非常强大,独立靠 Ext JS 几乎就可以取代控制层完成于客户的交互。强大的功能,丰富的控件库,华丽的效果也使得 Ext JS 成为内网开发利器。
YUI 也有自己的 JavaScript 类库,DOM 操作和效果处理也还比较方便,功能和控件也很齐全,但是相比 jQuery 和 Ext JS 显得比较中庸一些。随着 Yahoo的没落,YUI 也渐渐的被淡化。
目前前端框架主要采用 JavaScript+CSS 模式。基于上面的几种javascript库,我们可以基于JQuery框架搭建起一个java web前端系统的框架。如丛林的前端就是COS-UI+jQuery搭建起来的,再利用插件ztree实现品类树在前端的展示。
JQuery能大大简化Javascript程序的编写,主要表现:
前端开发流程:
前端RD在开发团队位置(其上游和下游):