快速业务通道

用Rails创建高质量Web应用 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
话,PDF跟HTML或者XML一样,只是Invoice的另一种表现形式而已。而表现一个资源,在show action中处理最为恰当。

重写之后,代码如下:

def show   ...   respond_to do |format|    format.html    format.pdf { render :pdf => @invoice.pdf }   end end 

重写之后的代码不仅更符合REST的风格,而且更加简洁优美。

JavaScript

随着RIA的普及以及HTML5时代的即将来临,JavaScript的江湖地位正在与日俱增。从Google的一些应用就可以看出业界对于 JavaScript态度的一些变化。比如Gmail,它提供了在无JavaScript支持环境下的普通版本和有JavaScript支持的全功能版本 ──这是一种渐进式增强的设计理念。但随后几年推出的Google Doc,已经完全放弃了对无JavaScript环境的支持。从这些变化可以看出,JavaScript已经是Web应用的“必需品”。甚至有人把 JavaScript称为当今最重要的编程语言,从某种意义上这种说法也不过分。

很久以来,我们一直以“脚本”的态度看待JavaScript。程序员对JavaScript的重视程度很不够,业界对程序员的JavaScript能力要求也不高。现在,必须做出这种态度的转变。

Rails 3所做的很大一个改进就是:Unobtrusive JavaScript(非侵入式的JavaScript),以实现对HTML和JavaScript代码的分离。比如:

<%= link_to "delete", album_path(@album), :method => :delete, :confirm => "Are you sure?"%>

在Rails 3之前,它生成的代码应为(代码进行了省略):

<a href="/albums/1" onclick="if (confirm(''Are you sure?'')) { var f = document.createElement(''form''); f.style.display = ''none''; this.parentNode.appendChild(f); f.method = ''POST''; ...

可以看到,生成的HTML内嵌了大量的JavaScript代码,这是一种不好的做法。Rails 3所做的其中一个改变,就是分离HTML和JavaScript代码,生成的HTML中内嵌的JavaScript代码消失了:

<a href="/albums/1" data-confirm="Are you sure?" data-method="delete" rel="nofollow">delete</a>

那么JavaScript代码到哪里去了?它们都被放到了一个叫做Rails.js的文件中。

跟服务端MVC要求职责分离一样,这个原则也应该体现在客户端的代码上。HTML、CSS和JavaScript应该职责明确地各自负责数据、显示和行为。同时,这种分离也对程序员的JavaScript能力提出了更高的要求。

用Rails创建高质量Web应用(3)

时间:2011-07-06 infoq 胡振波

性能

从一个请求(Request)的数据传输角度看,数据一般会经历从数据库到服务器,最后到客户端这么一个过程(可能还有其它层次)。数据离客户端越近,响应速度肯定越快。因此,缓存是提升性能的一大利器。

而客户端缓存是离用户最近的地方。关于客户端缓存的一条原则是:不要缓存动态HTML页面,但永久缓存一切其它文件类型。Rails对静态文件的处理很好地体现了这条原则。比如下面这段代码:

stylesheet_link_tag("application")

它生成的HTML是:

<link href="/stylesheets/application.css?1232285206" media="screen" rel="stylesheet" type="text/css"/>

其中application.css?1232285206的后缀是这个文件的时间戳。那么客户端就可以放心地永久缓存这个静态文静。因为文件一旦更新,客户端就会认为这是一个新的请求,即会去获取最新的文件。

Rails还在其它很多方面提供了简便的方法使性能优化变得简单,比如服务端缓存机制等。但大多数时候,性能问题源自于我们

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号