速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

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:591314
用户头像

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

关注

评论

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

《价值》- 护城河(6)

石云升

读书笔记 护城河 28天写作

Redis 学习笔记 08:数据结构与对象小结

架构精进之路

redis 七日更 28天写作

LeetCode题解:105. 从前序与中序遍历序列构造二叉树,递归+哈希表,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

关于JDK15的简单理解

Java架构师迁哥

客户服务高触达,零代码从短信/邮件跳转小程序客服

环信

数字货币应用从C端走向B端 实践中这些难题仍需关注

CECBC

数字货币

Android面试(二)

我就感觉到快

EXCEL数据太“脏”无从下手?何须用python,ETL一分钟搞定

智分析

Excel ETL

第一周作业

Esther

阿里开源SpringSecurity:用户+案例+认证+框架

996小迁

Java 程序员 架构 面试 springsecurity

万字带你深入阿里开源的Canal工作原理

大数据老哥

大数据 canal

实现数字经济和实体经济深度融合

CECBC

区块链

为什么你家的 K8s 应用平台不好用?

孙健波

Kubernetes PaaS KubeVela

AES128解密只能解一半的问题

李日盛

AES 问题定位

永续合约APP系统软件开发

系统开发

你kin你擦!阿里终于肯把内部高并发编程高阶笔记开源出来了

Java架构之路

Java 程序员 架构 面试 编程语言

百度首届智能小程序高校大赛圆满结束:关注学生心理健康小程序获全国一等奖

DT极客

​Kubernetes资源清单篇:如何创建资源?​

xcbeyond

Kubernetes 28天写作 Kubernetes从入门到精通

技术分享 | 漫谈音视频中的拥塞控制

拍乐云Pano

吉他谱怎么看?看谱大攻略送上!

懒得勤快

音乐 吉他学习 吉他谱 看谱

快了何止100%?阿里巴巴Java性能调优实战(2021华山版)PDF版开源

Java架构追梦

Java 阿里巴巴 架构 性能优化 华山版

阿里云 RTC QoS 屏幕共享弱网优化之若干编码器相关优化

阿里云CloudImagine

音视频 WebRTC 网络 RTC 视频会议

Soul网关源码阅读(八)路由匹配初探

Java 源码阅读 网关

观看辽篮比赛,思考团队管理——关于团队的灵魂拷问,你中了几个?

伯薇

团队管理 团队建设 团队 赋能 激励

架构师训练营第三周作业 - 学习总结

阿德儿

胜天半子!阿里内部力荐SpringBoot全栈笔记全网首发,源码实战齐飞

Java架构之路

Java 程序员 架构 面试 编程语言

边缘安全 | 正确使用CDN 让你更好规避安全风险

阿里云Edge Plus

安全 CDN

跨界融合,区块链推动实体经济提档升级

CECBC

人工智能 云计算 大数据

认识产品经理(第一节)

让我思考一会儿

蝉联 Apache 最活跃项目,Flink 社区是如何保持高速发展的?

Apache Flink

flink

一文读懂 Serverless,将配置化思想复用到平台系统中

Serverless Devs

Serverless 云原生 PaaS

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