BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Rails Cells:让Rails支持面向组件的开发

| 作者 Mirko Stocker 关注 1 他的粉丝 ,译者 贾晓楠 关注 0 他的粉丝 发布于 2008年5月19日. 估计阅读时间: 4 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

Rails Cells的目标是“把面向组建开发的优势带进Ruby on Rails网络应用程序平台”。单元(cell)就像是一个轻量级的控制器以及与其相关的可以嵌入网站的视图(类似于Smalltalk的网络应用程序框架Seaside)。

那么Rails现在的功能有什么问题呢?Mike Pence的博客里是这么说的:

很多Rails项目通常用before_filters和子视图(partials)来填补空缺,但是这种方法本身有些问题。共享的子视图有许多初始化代码,这使application_helper变 得肿胀不堪。由于他们能看到所有先前的控制器方法的实例变量——我觉得这是个不幸的设计——它们会非常依赖于最初引发它们的控制器、最初包含它们的视图, 还有它们所依靠的辅助器(helper)。从我的经验来看,很少见到大量的子视图能够容易地共享,而不需要人们通过相当痛苦地调试把它们从自己编织的依赖 网中解救出来。

与控制器和其视图之间的关系不同,控制器的实例变量并不会自动地分享给cell,而必须要明确地传递。这就使得Cells能够独立于某个特定的控制器,从而既可以重用也可用共享了。

我们访问了Cells的开发者之一Nick Sutterer,谈了关于Cells项目开发的情况: 

我们正在写Cells的增强版,可是日常工作还是很忙的(开源开发者的经典理由)。幸运的是,社区上有 人已经提交了一些补丁,并帮助做了些文档——特别是Mike Pence。在1.0发布时,我们希望这个插件是好用、著名的,其API应是稳定可靠的,并且将来不应有大的改动。
下一个版本将会完全兼容Rails 2.0。现在辅助器(helper)还有一些问题。另外一个问题就是Cells的引擎(Engines插件用来增强Rails自身的插件框架,使得更容易 在插件中共享控制器、辅助器和模块等)支持。我们其实很喜欢引擎。干得漂亮,James。然而人们好像都害怕它,因此我们只好把它变成用户可选的。我非常 喜欢把cells注入引擎的想法,这有助于把我的应用程序在最大程度上实现模块化。与AJAX结合时,cells中的冒名保护(forgery protection)仍有一些问题。由于cells非常合适于AJAX来使用,我们将十分关注这点,并在下一个版本中解决这个问题。我保证。

我们还有兴趣听听,到目前为止,Cells在Rails社区中被接纳的如何了:

Rails社区对cells非常感兴趣。人们来到我们的聊天室或者使用邮件列表来询问怎样把cells 集成到他们的项目中。Cells把面向组件带进了rails——然而要让开发者都了解到它的能量并且在大项目中使用它还需要一段时间。我的合作开发者 Peter Bex已经开始使用cells了。他把cells集成到了一个叫做formbuilder的项目中。我现在忙于即将发布的基于cells的Apotomo插件。它用来把状态(stateful)组件引入Rails,现在很热门。我敢肯定会有越来越多的好项目使用cells的。也许我应该在cells主页上开一个“成功故事”博客吧?

要详细了解Cells,请参看Cells网站,或者看一看Cells文档

你使用过Cells吗?有没有关于Cells的成功故事呢?

查看原文:Rails Cells: Component-Oriented Development for Rails

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT