DPI、DPR、屏幕尺寸等释义

物理分辨率 & 设备分辨率 (Device resolution)
单位:
像素密度 DPI ( Dots per inch ),单位像素/尺寸。是打印机、鼠标等设备分辨率的单位。
 
一平方英寸面积内像素的多少。dpi越小,扫描的清晰度越低,由于受网络传输速度的影响,web上使用的图片都是72dpi。
 
冲洗照片不能使用这个参数,必须是300dpi或者更高350dpi。
 
 
屏幕尺寸:
是指屏幕对角线的尺寸,一般用英寸来表示。1英寸=2.54厘米
 
设备像素比 DPR( devicePixelRatio ):
提供了设备像素个数和理想视口的比。
浏览器厂商决定了设备的理想视口,DPR也由他们决定,单位是dppx。
 
dppx 每一个像素的点数。一英寸对应了css中的96像素,1dppx等于96dpi。
 
resolution 设备的分辨率,如:96dpi, 300dpi
 
设备像素dp(device pixels):
ppi就是设备像素dp(device pixels)的单位。
 
ppi(pixels per inch)表示每英寸所拥有的像素(pixel)数目,数值越高,代表屏幕能以更高的密度显示图像。
计算公式:ppi=像素数量/物理尺寸(英寸数)
 
 
注:
写代码的时候只要关注dpr就可以了,网页的视口的大小是设备分辨率/dpr

REST与RESTful

rest即表述性状态传递(英文:Representational State Transfer,简称REST)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。它是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。

通过 REST 风格体系架构,请求和响应都是基于资源表示的传输来构建的。资源是通过全局 ID 来标识的,这些 ID 一般使用的是一个统一资源标识符(URI)。客户端应用使用 HTTP 方法(如,GET、POST、PUT 或 DELETE)来操作一个或多个资源。通常,GET 是用于获取或列出一个或多个资源,POST 用于创建,PUT 用于更新或替换,而 DELETE 则用于删除资源。

RESTful Web Service 是一个使用 HTTP 和 REST 原理实现的 Web Service。通常,一个 RESTful Web Service 将定义基本资源 URI、它所支持的表示/响应 MIME,以及它所支持的操作。

Native App、Web App 还是Hybrid App?

一、什么是Native App?

Native App即原生应用,即我们一般所称的客户端,是针对不同手机系统单独开发的本地应用,如需使用需要先下载到手机并安装,下载Native App的最常见方法是访问应用程序商店,如苹果的App Store、安卓市场、Google Play等。在技术实现上一般采用针对操作系统的特定语言进行编写,如:使用Objective-c开发IOS应用,使用Java+Android开发 android应用。

Native App的优点:

  • 可以在应用商店轻易地找到并且能在手机主屏幕上生成相应的图标
  • 可以利用系统API及平台特性,访问手机的提供的功能(GPS,相机等)
  • 可访问本地资源,支持离线工作,节省用户的流量成本
  • 可针对不同平台提供不同的体验,针对平台特性去做用户体验优化
  • 与系统高度切合,可获得更快的运行速度和性能,并支持丰富的图形和动画。

Native App的缺点:

  • 开发成本高,需要针对不同平台需要不同的技术背景进行开发
  • 维护成本高,用户必须手动下载更新,历史版本又不能不维护
  • 未知的上线时间,需要通过应用商店的审核

Native App最大的优势就是可以使用操作系统开发商提供的API。这些API可以分为两大类:低级API和高级API。

  • 低级API:应用程序能直接与触摸屏或键盘进行联系、渲染图形、连接至网络、处理从麦克风收到的音频、通过扬声器或麦克风播放声音,或者接收来自 摄像头的图像或视频。应用程序能访问全球定位系统(GPS)、接收方位信息,当然还可以读写固态硬盘上的文件,或者访问现有和将来会有的其他任何硬件元 件。
  • 高级API:提供对个人移动体验来说很重要的较高级服务,这类服务包括浏览Web,管理日历、联系人资料和相册等,当然还包括打电话或收发文本消息的功能。

操作系统提供的另一组重要的API是GUI工具包。每一种移动操作系统都随带各自的一组用户界面组件,比如按钮、输入区、滑块、菜单、菜单栏、对话框及其他。可以使用这些组件的应用程序继承了该特定移动操作系统的外观和感觉,通常会带来非常流畅的用户体验。

二、什么是Web App?

Web App又叫Web应用,简单的说就是一个触屏版的网站。Web应用完全用HTML、JavaScript和CSS等Web技术开发,通过移动设备的浏览器来访问,缺点是这些基于浏览器的应用无法调用系统API来实现一些高级功能,也不适合高性能要求的场合。

Web App的优点:

  • 开发成本低,使用现有的Web开发技术即可
  • 适用范围广,覆盖所有智能手机,跨平台和终端
  • 方便、快捷地部署,无需用户安装
  • 用户总能访问到最新版本,迭代更新容易
  • 可被搜索引擎收录并带来流量

Web App的缺点:

  • 浏览体验短期内还无法超越原生应用
  • 不支持离线模式(HTML5将会解决这个问题)
  • 消息推送不够及时
  • 调用本地文件系统的能力弱
  • 较差的和较慢的性能体验(大部分需要链接互联网)
  • 支持图形和动画效果较差
  • 不适用于应用商店及没有靠下载应用盈利机会
  • 限制用户使用功能(比如,相机、GPS等)

移动Web App是一种很有希望的趋势。为了紧紧抓住这个趋势,帮助开发者构建客户端用户界面,已开发出越来越多的JavaScript工具包,比如Sencha Touch和jQuery Mobile,它们创建的用户界面在外观和感觉上与Native App大同小异。两者都完全在移动设备的浏览器里面执行,充分利用了现代移动浏览器所提供的最新JavaScript、CSS和HTML5特性。

三、什么是Hybrid App?

Hybrid App又叫混合应用,是一种介于Native App、Web App之间的App,它虽然看上去是一个Native App,但只是一个UI WebView,里面访问的是一个Web App。Hybrid App实质是伪造一个浏览器的apk/ipa原生程序,并运行了一个Web APP。Hybrid App兼具“Native App良好用户交互体验的优势”和“Web App跨平台开发的优势”。它可以使web开发人员可以几乎零成本的转型成移动应用开发者,并且相同的代码只需针对不同平台进行编译就能实现在多平台的分 发,而相较于Web App,开发者可以通过包装好的接口,调用大部分常用的系统API。

Hybrid App的优点:

  • 支持多平台访问
  • 手机功能都可访问
  • 适用于应用商店
  • 部分支持离线功能

Hybrid App的缺点:

  • 未知的部署时间
  • 用户体验不如本地应用
  • 性能速度较慢(需链接网络)
  • 该技术尚未发展成熟,依然是一门新技术

Hybrid开发方法结合了Native开发和Web技术。借助这种方法,开发者就能使用跨平台Web技术,开发应用程序的大部分代码,又可以在需 要时直接访问Native API。App的Native代码部分使用操作系统的API来创建嵌入式HTML渲染引擎,该引擎在浏览器和设备的API之间充当了桥梁。这座桥梁让 Hybrid App得以充分利用现代设备所提供的全部特性。App的Web部分可能是驻留在服务器上的网页,也可能是一组HTML、JavaScript、CSS和媒 体文件,封装到App代码中,存储在设备本地。放置在服务器上的HTML代码让开发者不必经历提交和批准过程,把Web代码封装到App里面可以提高性能 和可访问性。

如果企业使用Hybrid开发方法,就能集两者之所长。一方面,Native让开发者可以充分利用现代移动设备所提供的全部不同的特性和功能。另一 方面,使用Web语言编写的所有代码都可以在不同的移动平台之间共享,使得开发和日常维护过程变得集中式、更简短、更经济高效。

四、Native App、Web App和Hybrid App的比较

Native开发方法在性能和设备访问方面很出色,但成本和更新方面有缺点。Web方法更新起来简单得多,成本较低,也更容易,但是目前功能有限, 也无法获得使用Native API调用所能获得的那种出色的用户体验。Hybrid开发方法提供了折中方案:在许多情况下,它集两者之所长,如果开发者面向多种操作系统更是如此。

app-dev

从上面的表格中可以看出,没有哪一种开发方法总是提供所有的优点。每一种开发方法有天生的局限性,没有哪一种方法能够满足现代移动企业的所有要求、 应对复杂情况。选择一种合适的方法取决于企业的具体要求,可能取决于诸多因素,比如预算、时间表、内部资源、目标市场、所需的应用程序功能、IT基础设施 及其他许多方面。但是有一点很清楚:如今的大多数公司显然在两个方面之间作取舍:一是用户体验和应用程序功能,另一是开发成本和产品上市时间。问题就变成 了选择一种合适的开发方法,能兼顾企业的要求和其在预算和产品上市时间方面的限制。

转自:http://www.biaodianfu.com/native-app-or-web-app-or-hybrid-app.html

css3 字体单位 rem

web页面中有很多字体单位(font-size)较常见的有em、px,让我们对比一下这两种单位:
px是绝对值,准确而稳定,但是它的改变会影响页面布局。
em是相对值,它以父元素的大小为基准单位来计算大小,所以很难把握。

rem介绍:
考虑到这么多字体单位的优缺点,在CSS3中rem诞生了。具体来历我们就不要去追究了,从字体表面上看它就是这么回事:
「rem」是指根元素(root element),加了个root前缀表示总是相对于根节点来计算,HTML文档的根节点当然就是标签了。
通过rem无论在文档任何位置指定都可以放心地得到预期的大小。它不会随着其它元素的改变而改变,我们只要设定html的文字大小就可以了,而不用考虑其它因素。

浏览器支持:
支持Chrome、Firefox、Safari、Opera、IE9+。
IE6,7,8就只能使用px或者em了。

设置1rem就等于10px:

html{
    font-size:62.5%; /* 10÷16=62.5% */
}
body{
    font-size:12px;
    font-size:1.2rem ; /* 12÷10=1.2 */
}
p{
    font-size:14px;
    font-size:1.4rem;
}

为什么要这么设置呢?
因为网页上的字体默认是16px,从遥远的 IE6 到版本帝 Chrome 他们都约好了,根元素默认的 font-size 都是 16px。
而16px的62.5%就是10px,1rem就等于10px,这个对于我们来说是非常棒的。
为了兼容不支持 rem 的浏览器,我们需要在 rem 前面写上对应的 px 值,这样不支持的浏览器可以优雅降级。

所以 rem 的出现解救了我这样不会算术的人,再也不用担心父级元素的 font-size 了,因为它始终是基于根元素(html) 的。
当然,你可以引入 CSS 预处理工具(Sass、LESS 、Stylus等)自动计算 rem 值,这里就不一一举例了。

需要注意的是,其实不用太纠结是默认的 font-size:100%,还是设置为 font-size:62.5%,如果你引入了 CSS 预处理工具那么自然可以使用默认值,如果由于其他原因使用 font-size:62.5% 也无可厚非,完全可以在 body 中重置回你需要的默认 font-size。

在这里我要提到一点的就是,假如你要是用rem来设置行高、边距之类的单位。
请在html中加入这么一句话,否则在其它的地方rem不是以根目录作为基准值了。
-webkit-text-size-adjust:none; 来消除webkit的默认属性,禁用Webkit内核浏览器的文字大小调整功能。

参考:
CSS3中新的字体单位rem
http://www.wenyejie.com/2013/04/06/css3%E4%B8%AD%E6%96%B0%E7%9A%84%E5%AD%97%E4%BD%93%E5%8D%95%E4%BD%8Drem/

css3文字单位rem 设置文字大小
http://www.qingdou.me/1647.html

Media Queries 媒体查询学习

在CSS3中我们可以设置不同类型的媒体条件,并根据对应的条件,给相应符合条件的媒体调用相对应的样式表。你可以同时给PC机的大屏幕和移动设备设置不同的样式表。这功能是非常强大的,他可以让你定制不同的分辨率和设备,并在不改变内容的情况下,让你制作的web页面在不同的分辨率和设备下都能显示正常,并且不会因此而丢失样式。

简单的实例:


上面的media语句表示的是:当页页宽度小于或等于600px,调用small.css样式表来渲染你的Web页面。

这个简单的实例引出两个概念性的东西,一个就是媒体类型(Media Type)和 媒体特性(Media Query)

一、媒体类型(Media Type)
媒体类型(Media Type)在css2中是一个常见的属性,也是一个非常有用的属性,可以通过媒体类型对不同的设备指定不同的样式,在css2中我们常碰到的就是 all(全部),screen(屏幕)
,print(页面打印或打邱预览模式),其实在媒体类型不止这三种,w3c总共列出了10种媒体类型。

二、媒体特性(Media Query)
前面有简单的提到,Media Query是CSS3 对Media Type的增强版,其实可以将Media Query看成Media Type(判断条件)+CSS(符合条件的样式规则),常用的特性w3c共列出来13种。

Media Queries的具体使用方式:

1、最大宽度Max Width


上面表示的是:当屏幕小于或等于600px时,将采用small.css样式来渲染Web页面。

2、最小宽度Min Width


上面表示的是:当屏幕大于或等于900px时,将采用big.css样式来渲染Web页面。

3、多个Media Queries使用


Media Query可以结合多个媒体查询,换句话说,一个Media Query可以包含0到多个表达式,表达式又可以包含0到多个关键字,以及一种Media Type。正如上面的其表示的是当屏幕在600px-900px之间时采用style.css样式来渲染web页面。

4、设备屏幕的输出宽度Device Width


上面的代码指的是iphone.css样式适用于最大设备宽度为480px,比如说iPhone上的显示,这里的max-device-width所指的是设备的实际分辨率,也就是指可视面积分辨率。

5、iPhone4

上面的样式是专门针对iPhone4的移动设备写的。

6、iPad

 

在大数情况下,移动设备iPad上的Safari和在iPhone上的是相同的,只是他们不同之处是iPad声明了不同的方向,比如说上面的例子,在纵向(portrait)时采用portrait.css来渲染页面;在横向(landscape)时采用landscape.css来渲染页面。

7、android

/*240px的宽度*/

/*360px的宽度*/

/*480px的宽度*/

我们可以使用media query为android手机在不同分辨率提供特定样式,这样就可以解决屏幕分辨率的不同给android手机的页面重构问题。

8、not关键字


not关键字是用来排除某种制定的媒体类型,换句话来说就是用于排除符合表达式的设备。

9、only关键字


only用来定某种特定的媒体类型,可以用来排除不支持媒体查询的浏览器。其实only很多时候是用来对那些不支持Media Query但却支持Media Type的设备隐藏样式表的。其主要有:支持媒体特性(Media Queries)的设备,正常调用样式,此时就当only不存在;对于不支持媒体特性(Media Queries)但又支持媒体类型(Media Type)的设备,这样就会不读了样式,因为其先读only而不是screen;另外不支持Media Qqueries的浏览器,不论是否支持only,样式都不会被采用。

10、其他
在Media Query中如果没有明确指定Media Type,那么其默认为all,如:


另外还有使用逗号(,)被用来表示并列或者表示或,如下


上面代码中style.css样式被用在宽度小于或等于480px的手持设备上,或者被用于屏幕宽度大于或等于960px的设备上。

关于Media Query的使用这一节就介绍到此,最后总体规纳一下其功能,个人认为就是一句话:Media Queries能在不同的条件下使用不同的样式,使用页面达到不同的渲染效果。

摘录至:http://www.w3cplus.com/content/css3-media-queries

FSD是什么?

FSD 即 full stack developer 全栈开发者

如何成为一个FSD?有个好办法,那就是:自己去做一个网站,并维护它。

成为了 FSD 有一个巨大的好处,那就是成为了 FSD 那就意味着你具备了单人创业的能力。
一个真正的全栈工程师,目标只有一个:创业。

a genuine interest in all software technology. (对所有的软件技术抱有一种真挚的兴趣)

成功,唯有积累,没有奇迹。要成为 FSD,也是没有捷径,靠的是吃苦和经验积累。

滚动视差含义及相关js插件介绍

什么是滚动视差?

视差(Parallax)是指从不同的点看一个物体时形成的视觉差异,这个名词是源自希腊文的παράλλαξις (parallaxis),意思是”改变”。

视差滚动(Parallax Scrolling)是指让多层背景以不同的速度移动,形成立体的运动效果,带来非常出色的视觉体验。

视差效果,原本是一个天文学术语,当我们观察星空时,离我们远的星星移动速度较慢,离我们近的星星移动速度则较快。当我们坐在车上向车窗外 看时,也会有这样的感觉,远处的群山似乎没有在动,而近处的稻田却在飞速掠过。许多游戏中都使用视差效果来增加场景的立体感。

说的简单点就是网页内的元素在滚动屏幕时发生的位置的变化,然而各个不同的元素位置变化的速度不同,导致网页内的元素有层次错落的错觉,这和我们人体的眼球效果很像。我看到多家产品商用视差滚动效果来展示产品,从不同的空间角度和用户体验,起到了非常不错的效果。

收集的一些js插件:

1、ScrollReveal.js 用于创建和管理元素进入可视区域时的动画效果,帮助你的网站增加吸引力。只需要给元素增加 data-scrollreveal 属性,当元素进入可视区域的时候会自动被触发设置好的动画。http://julianlloyd.me/scrollreveal/

2、Headroom.js – 快速响应用户的页面滚动操作 http://wicky.nillia.ms/headroom.js/
摘要: Headroom.js 是一个轻量级,高性能的JS插件(无依赖性!),允许你响应用户的滚动行为。Headroom.js 使您能够在适当的时候把元素融入视图,而其它时候让内容成为焦点。Headroom.js 简单易用,它有一个纯 JS API,以及可选的 jQuery、Zepto 和 AngularJS 兼容的插件。

3、Parallax.js – 自适应智能设备方向的视差效果插件 https://github.com/wagerfield/parallax/
Parallax.js 是一个简单的,轻量级的的视差引擎,能够对智能设备的方向作出反应。在没有没有陀螺仪或运动检测硬件可用的时候,使用光标的位置来代替。有很多的行为,你就可以设置为任何给定的视差实例。这些行为既可以通过在标记中指定的数据属性或通过构造函数 和 JavaScript API 调用。

4、Owl Carousel – 支持触摸的 jQuery 响应式传送带插件 http://owlgraphic.com/owlcarousel/
Owl Carousel 是一个 jQuery 插件,使我们能够迅速地创建响应式传送带滑块。这个插件是触摸友好的,能与几乎任何的 HTML 内容兼容使用。另外,强大的选项设置支持分页/滑动速度,启用/禁用自动播放,显示子弹导航等等。

5、jQuery localscroll (文章之间顺差滚动插件) http://www.flesler.blogspot.com/2007/10/jquerylocalscroll-10.html

6、jQuery scrollTo (最主要的平滑滚动) http://www.flesler.blogspot.com/2007/10/jqueryscrollto.html

7、jQuery Inview (判断一篇文章是否在浏览) http://remysharp.com/2009/01/26/element-in-view-event-plugin/

8、jScrollPane 跨浏览器设置样式的滚动条与jQuery和CSS http://jscrollpane.kelvinluck.com/index.html

资料:
滚动视差设计指南
20个创意十足的网页视差滚动效果欣赏
六款帮助你实现惊艳视差滚动效果的 jQuery 插件

单一入口、MVC、OOP、ORM、CURD、ActiveRecord概念

MVC
MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型(M)、视图(V)、控制器(C),它们各自处理自己的任务。

视图 :视图是用户看到并与之交互的界面。对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括Adobe Flash和象XHTML,XML/XSL,WML等一些标识语言和Web services。如何处理应用程序的界面变得越来越有挑战性。MVC一个大的好处是它能为你的应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。

模型 :模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。例如它可能用象EJBs和ColdFusion Components这样的构件对象来处理数据库。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。

控制器 :控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后确定用哪个视图来显示模型处理返回的数据。

现在我们总结MVC的处理过程,首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过表示层呈现给用户。

OOP
面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构。OOP 的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成。OOP 达到了软件工程的三个主要目标:重用性、灵活性和扩展性。为了实现整体运算,每个对象都能够接收信息、处理数据和向其它对象发送信息。OOP 主要有以下的概念和组件:

组件 - 数据和功能一起在运行着的计算机程序中形成的单元,组件在 OOP 计算机程序中是模块和结构化的基础。

抽象性 - 程序有能力忽略正在处理中信息的某些方面,即对信息主要方面关注的能力。

封装 - 也叫做信息封装:确保组件不会以不可预期的方式改变其它组件的内部状态;只有在那些提供了内部状态改变方法的组件中,才可以访问其内部状态。每类组件都提供了一个与其它组件联系的接口,并规定了其它组件进行调用的方法。

多态性 - 组件的引用和类集会涉及到其它许多不同类型的组件,而且引用组件所产生的结果得依据实际调用的类型。

继承性 - 允许在现存的组件基础上创建子类组件,这统一并增强了多态性和封装性。典型地来说就是用类来对组件进行分组,而且还可以定义新类为现存的类的扩展,这样就可以将类组织成树形或网状结构,这体现了动作的通用性。

由于抽象性、封装性、重用性以及便于使用等方面的原因,以组件为基础的编程在脚本语言中已经变得特别流行。

ORM
对象-关系映射(Object/Relation Mapping,简称ORM),是随着面向对象的软件开发方法发展而产生的。面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是企业级应用环境中永久存放数据的主流数据存储系统。对象和关系数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据。内存中的对象之间存在关联和继承关系,而在数据库中,关系数据无法直接表达多对多关联和继承关系。因此,对象-关系映射(ORM)系统一般以中间件的形式存在,主要实现程序对象到关系数据库数据的映射。

面向对象是从软件工程基本原则(如耦合、聚合、封装)的基础上发展起来的,而关系数据库则是从数学理论发展而来的,两套理论存在显著的区别。为了解决这个不匹配的现象,对象关系映射技术应运而生。

CURD
CURD是一个数据库技术中的缩写词,一般的项目开发的各种参数的基本功能都是CURD。它代表创建(Create)、更新(Update)、读取(Read)和删除(Delete)操作。CURD 定义了用于处理数据的基本原子操作。之所以将CURD 提升到一个技术难题的高度是因为完成一个涉及在多个数据库系统中进行CURD操作的汇总相关的活动,其性能可能会随数据关系的变化而有非常大的差异。

CURD在具体的应用中并非一定使用create、update 、read和delete字样的方法,但是他们完成的功能是一致的。例如,ThinkPHP就是使用add、save、select和delete方法表示模型的CURD操作。

ActiveRecord
ActiveRecord也属于ORM层,由Rails最早提出,遵循标准的ORM模型:表映射到记录,记录映射到对象,字段映射到对象属性。配合遵循的命名和配置惯例,能够很大程度的快速实现模型的操作,而且简洁易懂。

ActiveRecord的主要思想是:

1. 每一个数据库表对应创建一个类,类的每一个对象实例对应于数据库中表的一行记录;通常表的每个字段在类中都有相应的Field;

2. ActiveRecord同时负责把自己持久化,在ActiveRecord中封装了对数据库的访问,即CURD;;

3. ActiveRecord是一种领域模型(Domain Model),封装了部分业务逻辑;

ActiveRecord比较适用于:

1. 业务逻辑比较简单,当你的类基本上和数据库中的表一一对应时, ActiveRecord是非常方便的,即你的业务逻辑大多数是对单表操作;

2. 当发生跨表的操作时, 往往会配合使用事务脚本(Transaction Script),把跨表事务提升到事务脚本中;

3. ActiveRecord最大优点是简单, 直观。 一个类就包括了数据访问和业务逻辑. 如果配合代码生成器使用就更方便了;

这些优点使ActiveRecord特别适合WEB快速开发。

单一入口
单一入口通常是指一个项目或者应用具有一个统一(但并不一定是唯一)的入口文件,也就是说项目的所有功能操作都是通过这个入口文件进行的,并且往往入口文件是第一步被执行的。

单一入口的好处是项目整体比较规范,因为同一个入口,往往其不同操作之间具有相同的规则。另外一个方面就是单一入口带来的好处是控制较为灵活,因为拦截方便了,类似如一些权限控制、用户登录方面的判断和操作可以统一处理了。

或者有些人会担心所有网站都通过一个入口文件进行访问,是否会造成太大的压力,其实这是杞人忧天的想法。

转自:http://hi.baidu.com/ylhtan/item/714a73898d74b9c8b071546b