50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

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

  • 2008-05-18
  • 本文字数:1231 字

    阅读完需:约 4 分钟

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

2008-05-18 08:591676
用户头像

发布了 33 篇内容, 共 66176 次阅读, 收获喜欢 0 次。

关注

评论

发布
暂无评论
发现更多内容

Taking advantage of context features

毛显新

自然语言处理 tensorflow 推荐系统

不愧是阿里内部“SpringCloudAlibaba学习笔记”竟然在GitHub霸榜

Java 程序员 架构 微服务 计算机

淘宝网 Java 千亿级并发系统架构设计笔记(全彩版小册开源)

Java 程序员 架构 并发编程 计算机

网络攻防学习笔记 Day90

穿过生命散发芬芳

网络攻防 7月日更

如何制定音视频编解码学习路线

hanaper

音视频 图像识别 图形处理 语言 & 开发

模块三-学生管理系统详细架构设计

kk

架构训练营

打造“云边一体化”,时序时空数据库TSDB技术原理深度揭秘

数据库 大数据 时序数据库 tsdb 数据智能

8月日更挑战正式开启,新人大奖等你来领!

InfoQ写作社区官方

8月日更 热门活动

【得物技术】服务发布时网络“抖动”

得物技术

网络 服务 响应时间 部署 发布

第三周作业-知识星球利益相关者排序

小夏

产品经理训练营 邱岳

Vue进阶(幺柒陆):CSS 预编译语言 Sass、Scss、Less 和 Stylus

No Silver Bullet

CSS less SASS scss 7月日更

「SQL数据分析系列」12. 事务

Databri_AI

sql 事务

品牌轮:用MOT引导的品牌体验模型

石云升

用户体验 关键时刻 7月日更 体验设计

Apache ShardingSphere:由开源驱动的分布式数据库中间件生态

亚马逊云科技 (Amazon Web Services)

人工智能 开源数据库

新思科技解读金融服务业的应用安全误区与现实

InfoQ_434670063458

新思科技 金融服务安全

2021可信云大会顺利召开,北鲲云践行云计算六大发展趋势

北鲲云

浪潮云洲赋能智造 拉升制造业“微笑曲线”

云计算

第九周作业-朴朴超市用户路径&转化漏斗

小夏

产品经理训练营 邱岳

Kafka为何弃用zookeeper(翻译)

石头哥谈架构

kafka kafka架构 分布式消息/流中间件

Linux之free命令

入门小站

Linux

Vue进阶(幺捌伍):应用 qs 插件实现参数格式化

No Silver Bullet

Vue 7月日更 qs

优先考虑 nameof

喵叔

7月日更

Building deep retrieval models

毛显新

自然语言处理 深度学习 tensorflow 推荐系统 keras

HarmonyOS开发者创新大赛获奖作品分享——《分镜头App》

科技汇

🏆「作者推荐!」【Java 技术之旅】彻底你明白什么是JIT编译器(Just In Time编译器)

码界西柚

Java 编译器 JIT compiler 即时编译器

发现了一个电子书仓库,分享给大家,值得收藏!

C语言与CPP编程

Java c++ Python C语言 数据结构与算法

新工科师资培训 |深度推进校企合作 新工科产学研联盟华为技术

科技汇

架构训练营第 1 期 模块三作业

高远

一句话木马该怎么实现?现在就带你了解

网络安全学海

Java 网络安全 信息安全 渗透测试 漏洞分析

Fil收益怎么看?Fil一天收益如何?

区块链 IPFS fil收益 filecoin生态

网络 IO 服务器模型 Reactor 与 Proactor

赖猫

Linux reactor

Rails Cells:让Rails支持面向组件的开发_Ruby_Mirko Stocker_InfoQ精选文章