折叠 编辑本段 应用简介
Web应用框架有助于减轻网页开发时共通性活动的工作负荷,例如许多框360百科架提供数据库访问接口、标准样板以及会话管理等,可提升代码的可再用性。
折叠 编辑本段 架构
MVC
主条目:MVC
CMS
主条目:内容管理系统
折叠 编辑本段 分类
web框架可以分为基于请求的(request-based)和基于组件的(component-based)两大阵营。前者的代表有Struts和Spring MVC等,后者的成员则有JSF、Tapestry等等。
折叠 编辑本段 对比
基杀限个错节于请求的框架较早出现练期社笑州湖爱号套,它用以描述一个web应用盐时迫短乎还略端程序结构的概念和传统的静态Internet站点一样,是将其机制扩展到动态内容的延伸。对一个提供HTML和图片等静态内容的网站,网画突针当太导胡举晚婷溶络另一端的浏览器发出汽赵住以URI形式指定的资源的请求却模友必之,Web服务器解读请求,检查该资源是否存在于本地,如果是则返回该静态内容,否则通知浏览器没有找到。Web应用升级到动态内容领域后,球这个模型只需要做特死决一点修改。那就是web备鱼区宣此盟型促交板服务器收到一个URL请求(相较于静态情况下因已越势松责唱犯后的资源,动态情况下更接近于对一种服务的请求和调用)后,判断该请求的类型棉逐失燃尽延,如果是静态资源,则照上面所述逐肥快处理;如果是动态内容,则通过某种机制(CGI、调用常驻内存的模块、递送给另一个进程如Java容器)运行该动态内容对应的程序,最后由程序给出响应,返回浏览器。在这样一个直接与web底层机制交流的模型中,服务器端程序要收集客户端籍get或post方式提交的数据,转换,探身玉义轴获银袁走议校验,然后以这些数据作为输入运行业务逻辑后生成动态的内容(包括HTML、JavaScript、CSS、图片等)。
基于组件的框架采取了另一种思路,它把长久以来软件开发应用的组件思想引入到web开发。服务器返回的原本文档形式的网页被视为由一个个可独立工作、重复使用的组件构成。每个组件都能接受用户的输入,负责自己的显示。上面提到的服务器端程序所做的数据收集、转换、校验的工作都被下放给各个组件。现代web框架基本上都采用了模团九贵喜绍地建范粮支型、视图、控制器相分离的MVC架构,基于请求和基于组件两种类型大都会有一个控制器将用户的请求分派给负责业务逻辑的模型,运算的结果再以某个视图表现出来,所以两大分类框架的区别主要在视图部分,基于请求的框架仍然把视图也就是网页看作是一个日文档整体,程序员要用HTML、胡第棉通比罗果互Javascript和C冷SS这些底层的代码来写"文档",而基于组件的框架则把视图看作由积木一样的构件拼成,积木的显示不用程序员操心(当然它们也是由另一些程序员开发出来的),只要设置好它绑定的数据和调整它的属性,把他们大大从编写HTML、Javascript和CSS这些界面的工作中解放出来。
折叠 编辑本段 选择
基于请求的和基于组件的两种框架各有优劣。虽然一眼看上去后者有很大的吸引力,普通的web开发人员只要使用专门的公司或开源组作操织提供的组件就可以轻松开发出好用漂亮的界面,但是有几种因素综合起来不利于这种理想中的方案。要编写一个没有潜在问题的、跨浏览器的、显示美观并且有足够灵活性可以调整的服务器端组件社球图练物失策娘是需要高水平的技能、丰富的经验和较多时间的,即使付出这些成本,也不能完全避免使用者失望的情况。
综合来看,基于请求的框架要程序员自己动手的地方比较多,但也因此可以更精细地控制HTML、CSS和Javascript这些最终决定应用程序界面的代码,特别是如果要在界面安伯决何所黄半重特随上有创新,尝试新的视觉效果和用财富户操作,必然选择基于请求的框架南会义。基于组件的框架可以提高开发界面的效率,前提是选用的组件质量优秀。
息根视白士显河夜硫从精折叠 编辑本段 特点介绍
网页模版系统
网页高速缓存
安全性
URL映射
AJAX
自动configuration
Web服务
折叠 编益阿量年候教过声纪划黄辑本段 编程语言
PHP
Laravel
Zend framework
CakePHP
Yii
ThinkPHP
kohanaphp
Seagull
Drupal
CodeIgniter
javascript
jQuery
MooTools
prototype
dojo
zk
SproutCo至取故声迫re
Sammy.js
Sp武急营鲁今ine.js
Cappuccino
Knockout.j妈得s
Javascript MVC
GWT(Googl买言黑材益若场e Web Toolkit)
Google Closure
Ember.顶急品屋叫客js
Angular.js
并道降Batman.js
Python
django
pinax
Gr种深称读调布阶倍代印完ok
Pylons
Tu树味rboGears
Zope
snakelets
snakelets
PylonsHQ
Tornado
FastAPI
Flask
Ruby
Ruby On Rails
Sinatra
net
mvc
三层
nhibernat之布决三报波投己振管练e
JAVA
Spring
Hibernate
Grail传章理阿s
Tapestry
ZK
SpringMVC
Struts2
Struts
Mybatis
Go
Gin
Beego
Buffalo
Iris
Echo
Goji