【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

Cells:将组件开发带入 Rails 2.3

  • 2009-10-18
  • 本文字数:1873 字

    阅读完需:约 6 分钟

Cells "将使得面向组件的开发惠及 Ruby on Rails Web 应用平台“,使得你能够创建独立并且可以重用的组件,这些组件是自包含的,并且能够和应用程序中的其他 Cells 组合在一起或者被其他 Cells 重用。

构建在 Cells 之上的 Apotomo 对 Cells 进行了改进,使其成为一个完全状态化的组件,能够提供和广为人知的 GUI widget 同级的抽象能力,即“Apotomo 使用能够自升级的事件驱动的 widget 扩展了 Rails 的功能”。所以,使用 Apotomo 的开发者能够利用现有的 JavaScript UI 库,例如 YUI,而不需要编写 JavaScript 代码或者关心底层 AJAX 调用。Apotomo widget 能够形成事件链,使得 widget 能够独立于其他并且易于重用。

InfoQ 已经关注 Cells 达一年之久,与此同时,Cells 1.0 已经发布,并且 Apotomo 的工作仍在继续。

InfoQ 采访了 Cells 的主要开发者 Nick Scutter。当问到“自从上次见面过后,这一年来你们对 Cells 进行了哪些改进呢?”,他回答道:

非常多!Cells 和 Rails 从 1.2.3 一起成长到 2.3,我也学习了 Ruby!我对语言的良好理解能力,以及大量整洁和结构化的 Cells 代码帮助了我。 除了我们介绍的高易读性的代码,我们还介绍了一种简单的,类似于 Rails 视图中使用的碎片缓存的缓存技术。这个技术允许缓存 Cells 视图,直到一个加载的版本更新方法决定其已经过期,而不会使得一个 Cell 实例失去其面向对象的特性。Michal Lomnicki 提供了非常多的帮助,他在他的项目中使用了补丁以及真实的测试用例。

上次你说在 Rails 社区有一个“值得注意的趋势”。现在情况是怎么样了?

我不会在这里说一些统计数据。好吧,当我开始 Cells 的时候,很多程序员都对我谈起过 Rails 缺少组件这个问题。 看看 GitHub 中 Cells 的监视器就能够明白,我们现在有大约 150 个代码编写者,他们能够在 Cells 被改动的第一时间得到通知。这很酷啊,我喜欢开发者对 Cells 感兴趣。我们有 6 个成功的分支合并到主线上。
突然网上出现了一些博客文章,讨论 Cells 和它的变种,例如部分和 presenter 结合起来,了解他人的想法是一天非常激动的事情。

另外一个激动的事情是 IRC 的#cell 频道。每次我加入的时候,总有 4 到 8 个人在潜水,他们来自于世界上各个地方。而新人不断地涌进然后寻求帮助。我想这个频道是这个项目中最重要的支持媒介,在这里遇到朋友总是非常有意思的。

自从 Cells 的发布开始,大量的公司告诉我他们在实际项目中使用 Cells 的情况。即使有 IBM 的资助,我仍然对等待其他人捐赠这事有点失望,真该感谢 MIT license。

这个项目值得留恋的是和我兄弟 Mike Pence 在 Florida 的 Orlando 举办的 RubyConf 2008 的谈话。我们在 Sarasota 度过了一段美妙的时光,准备讨论,喝啤酒和狂欢!有很多人坐在大堂中倾听我们的演讲。我们在演讲之后进行了非常深入的讨论,即便在晚会上,我们也没有停止交谈。

在我们美国之行之后,我们发布了 Cells for Rails 2.3,在 Apotomo 博客上发布的官方信息每天的浏览数都在 500 左右。这是一个非常愉快的经历,也证明了 David 的眼光没错。

David 曾经和我们联系过,但是我们从没有想过找一个如何将 Cells 集成到 Ruby 中的方案。我们更愿意它是一个插件。插件是好东西。

我曾经研究过 Rails 3 的代码。我也是 Yehuda 重构的粉丝,我真心希望一个新的内嵌 API 能够帮助它实现一些 Cells 的功能。每个人都需要组件。所以,我希望等待,直到 Rails 3 的 API 稳定,或者我可以继续钻研 Cells。现在,我主要在编写教程,文章以及改进 Apotomo,我们可以期待一下在 Rails 3 中使用的 Cells 吧。

我们真的需要状态化的组件吗?

不,如果你喜欢“暴力线性控制流”,在每一个请求,你要么展现完整的页面,或者在控制器,视图甚至在你 MVC 栈的模型中有一些凌乱的 AJAX 逻辑,那么你不需要组建。同样,如果你希望对每个请求建立完整的处理环境,那么你也不需要状态化。 让我们引用 Mike 的话。“现在是拥有一个更好的玩具的时候了,虽然这些孩子已经有很好的玩具,但是为什么不将 Rails 更进一步呢”。Smalltalk 开发者喜欢 Seaside,GUI 开发者讨厌 Web。为什么不把这些东西的优点结合起来放入 Rails 中呢?

我的意思是,在其应用中使用多少 Apotomo 完全取决于程序员本身,当他体验过状态化 widget 的巨大威力之后,他不会再回到他的臃肿的控制器了。

不仅仅是其重用性,而且还有它良好的封装,为程序准备的强力测试器,它是事件驱动的,只需要很少的代码以及一个优秀的开发流就能够得到一个状态化的 widget,它真酷。

请访问 RubyForge 上的 Cells 网站获取更多信息。

查看英文原文: Cells: Components for Rails 2.3

2009-10-18 21:041232
用户头像

发布了 90 篇内容, 共 32.7 次阅读, 收获喜欢 5 次。

关注

评论

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

5G-A,一根蓄满能量的弹簧

脑极体

5G

一款便捷操作移动设备的PC工具

iofomo

android 开发工具 测试工具 PC ios 开发

支持M1/M2,Axure RP 9授权密钥激活可用 附 Axure RP 9激活教程

Rose

Axure RP 9汉化 原型设计软件 Axure RP 9破解版 Axure RP 9授权

文字处理软件推荐 Mellel 6 激活中文版

胖墩儿不胖y

Mac软件 文字处理软件

【Linux】工具介绍vim及gcc详解。

百度搜索:蓝易云

vim Linux 运维 云服务器 GCC

【分布式技术专题】「分析Web服务器架构」Tomcat服务器的运行架构和LVS负载均衡的运行机制(修订版)

洛神灬殇

tomcat 分布式 分布式技术 架构原理 2024年第三篇文章

【Mac/win】Topaz Gigapixel AI v6.3.3 绿色便携版 自带激活补丁

Rose

图片放大工具 Topaz Gigapixel AI便携版 Topaz Gigapixel AI教程

etcd-workbench一款免费好用的ETCD客户端,支持SSH Tunnel、版本对比

北风

Docker etcd tools etcd-client

好用的软件卸载工具:TrashMe激活最新版

mac大玩家j

Mac软件 卸载工具 软件卸载

解读 $mash 通证 “Fair Launch” 规则,将公平发挥极致?(Staking 玩法)

西柚子

通过聚道云软件连接器实现金蝶软件与客如云软件的无缝对接

聚道云软件连接器

案例分享

C 语言指针完全指南:创建、解除引用、指针与数组关系解析

小万哥

程序人生 编程语言 软件工程 C/C++ 后端开发

一文读懂 $mash 通证 “Fair Launch” 规则(幸运池玩法解读篇)

EOSdreamer111

One Switch 让你的 Mac 也能拥有控制中心

Rose

One Switch下载 苹果Mac 必备 系统功能快速开关工具

3D 建模中的 GLTF、USDZ 和 GLB 3D 文件格式

3D建模设计

3D模型 GLTF glb USDZ

macOS 14 Sonoma(最新MacOS系统) pkg完整安装包 14.2正式版

Rose

一文读懂 $mash 通证 “Fair Launch” 规则(幸运池玩法解读篇)

西柚子

恭喜 Databend 上榜 2023 开源创新榜「优秀开源项目 」

Databend

解读 $mash 通证 “Fair Launch” 规则(Staking 玩法解读篇)

BlockChain先知

IBM SPSS Statistics 默认工具栏缺失怎么办?

Rose

聚道云软件连接器助力某动漫行业公司实现财务自动化

聚道云软件连接器

案例分享

【Redis深度专题】「核心技术提升」从源码角度探究Redis服务的内存使用、清理以及逐出等底层实现原理

洛神灬殇

redis 底层原理 清理缓存 原理机制 功能实现 2024年第二篇文章

避免重复扣款:分布式支付系统的幂等性原理与实践

隐墨星辰

幂等性 支付系统设计与实现 全局幂等 防止重复扣款

一文读懂 $mash 通证 “Fair Launch” 规则(幸运池玩法解读篇)

股市老人

纹理贴图如何为游戏角色增添质感

3D建模设计

3D渲染 3D材质纹理贴图 3D材质编辑器

GLTF编辑器设置3D纺织纹理贴图

3D建模设计

3D渲染 3D材质编辑 3D材质纹理贴图

解读 $mash 通证 “Fair Launch” 规则,将公平发挥极致?(幸运池玩法)

石头财经

3D模型轻量化

3D建模设计

3D轻量化 三维模型轻量化

如何提高3D渲染速度

3D建模设计

3D渲染 3D加载 3D模型加载速度 3D模型渲染效率

【Redis技术专区】「原理分析」探讨Redis6.0为何需要启用多线程

洛神灬殇

redis 多线程 原理分析 并发机制 2024年第一篇文章

解读 $mash 通证 “Fair Launch” 规则,将公平发挥极致?(Staking 玩法)

石头财经

Cells:将组件开发带入Rails 2.3_Ruby_Mirko Stocker_InfoQ精选文章