Oreilly.Developing.Large.Web.Applications.Mar.2010读后记录

Oreilly.Developing.Large.Web.Applications.Mar.2010读后记录

【概要】
作者偏向于使用动态语言将JS,CSS,HTML等代码全部封装在类中,从而实现整个应用的模块化
包括页面的模块化,数据的模块化,CSS的模块化,JS的模块化
读完全书…… 感觉有些纠结,不知道作者想干嘛,模块化?封装?应该是我水平不够!

【关键字】
模块化,封装,面向对象
内容,结构,表现,行为分离

【章节介绍与体会】
chapter1 The Tenets
总体介绍了这本书,差不多就是将整本书的每个章节进行了简单的说明
其中就模块化组件进行了介绍
原则一:由模块化组件构成的大型WEB应用是高可用的,可维护和可靠的
原则二:在大型WEB应用中,使用面向对象的JavaScript和服务器端脚本将推动应用的模块化,从而提高应用的可重用性,可维护性和可靠性
原则三:HTML是语义化,它本身是缺乏表现元素的, 但是它能以一种容易识别内容的形式插入到多种环境
HTML是一种对文本内容进行结构和意义(或者说“语义”)进行补充的方法
关于HTML的语义化的好处请猛击:http://www.vogim.com/teach/tutorial_show.aspx?id=395
原则四:CSS是信息架构的表现层,可以以模块化的形式在各种环境下复用
原则五:JavaScript是信息架构的行为层,可以以模块化和面向对象的形式在各种环境下复用
原则六:在用户接口与后端之间的数据交换可以通过一个清晰的数据接口定义来管理。页面定义一个单一的的点来加载和保存数据
原则七:以高可用性的模块组成的页面封装一切需要的东西(如HTML,CSS,JavaScript及其它),这可以使每个模块以独立的功能模块和聚合的单位用于各种环境的各个页面
原则八:Ajax是轻量和模块化的,并且在数据交换和更新之间保持一个清晰的隔离。在浏览器和服务器之间的数据交换可以通过一个定义清楚的接口来进行管理
原则九:大型HTML,JavaScript,CSS和PHP为建造一个大型的WEB应用提供了一个好的基础。他们还提升了网站测量和测试的环境
原则十:大型WEb应用的文件组织结构反映了这个应用的架构,其中包括明确划分每个文件的使用范围

chapter2 Object Orientation
这一章首先概述了面向对象以及为什么使用面向对象是一种比较好的方法,然后简单介绍了uml以及如何以面向对象的方式展现一个web页面,最后作者讲了PHP和Javascript中面向对象的一些基础知识
其中特别指出PHP是基于类的语言,而javascript是基于原型(或对象)的语言

chapter3 Large-Scale HTML
阐述了模块化对于一个好的信息架构的重要性,以及如何模块化HTML,其中推荐语义化的HTML
然后作者对于我们常用的HTML标签进行了区分,分出哪些是好的标签(例如:strong,div,body,ul,li等等),哪些是坏的(例如:font,i,hr,d等)
然后就id,class,name作了说明;
一个id在一个页面中只能出现一次
class是语义化的元素的一个集合,可以在一个页面出现多次
name属性用于表单提交数据到服务器
关于id和name的相同点和不同点请移步: http://www.phppan.com/2009/09/id-and-name-attribute-in-html/
然后就RDFa,XHTML及HTML5作了简单说明

chapter4 Large-Scale CSS
同样,在本章作者提出了模块化CSS的概念
一个好的WEB系统的表现层是通过CSS来实现的
首先说明了包含CSS的三个方法:链接,内联,嵌入,在嵌入CSS后,我们需要应用这些CSS,那么此时我们就会用到id(以#开头), class(以.号开头)以及使用后代(以空格隔开),元素,组(以逗号隔开)
然后介绍了CSS的应用范围,如模块级,页面级,其中就页面级范围,作者给了一个在body中添加id属性,使用CSS的后代应用方式控制显示的方法()
在本章的第二节,作者介绍了CSS中的定位技术,其中就盒子模型,文档流,相对定位,绝对定位和浮动,这对CSS的定位技术有一个不失简单的说明
第三节就层与容器分别作了一个简单的 示例,然后第四节就CSS重置及字体设置进行了简单说明,其中作者推荐使用YUI进行操作

chapter5 Large-Scale JavaScript
同CSS一样,作者提出了模块化Javascript的概念
首先在第一节作者对于包含Javascript进行了说明:它与CSS一样包含三种方法:链接,内联,嵌入,然后介绍了JS的命名空间和依据ID访问module
第二节介绍了DOM,以及常用的类库中的DOM
第三节介绍了事件驱动应用
第四节介绍了一些JS实现动画效果(动作,尺寸,颜色)

chapter6 Data Management
数据分为静态数据和动态数据,不同的数据的管理策略也不同
定义数据接口,所有的数据都从数据接口中获取,每个页面仅有一个点来获取数据
数据管理者是一个抽象和封装了特殊数据集的对象,并非每个模块都会有相应的数据管理者,也存在共用的数据管理者
在作者示例中可以看到数据管理者都会有相同的方法保存数据和获取数据,并且还提到了使用继承和委托的方式扩展数据
作者提到可用的数据源包括:SQL(数据库),XML
可以使用来自网络的数据,它通常包括XML格式或JSON格式
在本章的最后,作者介绍了cookie的数据管理,及表单的数据管理($_GET, $POST, $_REQUEST)

chapter7 Large-Scale PHP
整个章节都是围绕Page类来进行,从创建到使用
page类将包含一个页面的所有元素,将JS,CSS等文件也聚合在一起
包括数据的加载和保存,并依据模块创建内容
在这个类中包括JS管理,CSS管理,动态数据管理,页面内容管理,页面公用元素管理

层和容器是模块化的特殊形式

chapter8 Large-Scale Ajax
Ajax是旧技术的集合,是新瓶装旧酒的过程
通过 XMLHttpRequest对象向服务器发送异步请求,获取数据并在前台页面做局部的更新
Ajax在页面中通过Javascript与服务器建立连接,并更新页面。
Ajax支持基本的GET和POST方法
在服务器对于Ajax发送的请求处理需要注意三个方面:1、选择一种数据格式;2、使用服务器代理;3、模块化
MVC是基于发布/订阅模式(观察都模式)?

chapter9 Performance
作者推荐了High Performance Web Site这本书
缓存很重要,我们可以缓存CSS文件,JS文件,图片,甚至模块化的实体内容和页面
对于不是经常变化的数据和文件,缓存是一种不错的优化方案
给CSS文件和JS文件添加版本
合并CSS文件,合并JS文件,减少连接数
缓存模块化内容
缓存Ajax内容
使用Expires
压缩JS
减少重复
…………
(整章内容貌似都是拿yahoo军规说事)

chapter10 Application Architecture
整个应用程序的文件目录的组织

–EOF–

Oreilly.Developing.Large.Web.Applications.Mar.2010读后记录》上有3条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注


*

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>