写点什么

Lilu:Rails Mockup 驱动开发之道

  • 2007-07-09
  • 本文字数:1187 字

    阅读完需:约 4 分钟

在两年前就有过一场争论,争论的焦点在于Rails 框架及它缺乏内建模板语言的支持,还有是否要为Rails 引入这样的模板语言。直至今天,已经存在有不下五种的模板系统:ERB、 HAML、Liquid、Amrita2 等等。然而所有这些都是将Ruby 语言或是Ruby 的派生语言与HTML 代码混合在一起。 Yurii Rashkovskii 最近引入了一种新的模板系统,称为 Lilu

Lilu 是一种允许保持 Rails 视图不变,使其内部无须含有 ERB 标签侵扰的方法(和工具)。

Lilu 的目标是让被插入在其中(按照 Java 中 Tapestry 的方式)的实际数据与 HTML 完全分离开,使保存并读取纯 HTML 代码更加容易。

Lilu 保证你得到纯粹的 HTML 代码,并使你通过编写指令来使用实际数据更新代码。

Yurii Rashkovskii在挪威奥斯陆的Ruby Tuesday 会议上进行了一次演讲,给出了如下的Lilu 代码示例:

静态XHTML 模仿 app/views/blog/post.html

<ul id="found_users"><br></br> <li id="found_user"><br></br> <h1>John Doe</h1><br></br> </li><br></br></ul><br></br><h4 id="no_matching_users">No matching users found</h4><br></br>同时也给出对应的 Lilu 代码app/views/blog/post.lilu

if @users and !@users.empty?<br></br> populate('#found_user').for(:each,@users) do |user|<br></br> mapping 'h1' => user.name<br></br> end<br></br> remove('#no_matching_users')<br></br>else<br></br> remove('#found_users')<br></br>endRails 创始人 DHH 对一个 HTML 和代码完全解耦的模板语言系统如何处像布局(layouts)和 partils 这样带来生产力的复杂技术持怀疑态度。但 Lilu 也提供对于 partials 的支持。

在 RailsConf07 大会上,Bruce William 在主题演讲 V is for Vexing 中给出了 Rails 模板解决方案的介绍,以及优缺点分析。Lilu 项目也应该被加入到列表之中。优点是 Lilu 将程序代码与 HTML 文档清晰的划分开来,允许通过 HTML 方便的与设计人员进行维护和协作。缺点有:1) 与 ERb 相比性能稍逊,2) 项目还处于早期状态,以及 3) 它不是 Rails 的标准之一。

两年前,David(即 DHH)这样总结到:

对“无编码”模板的追求,让我想起 MDA 阵营对“无编码”程序这个圣杯的找寻。这是一种海市蜃楼式的幻想,也就是和“把玫瑰换个名字”(译注:原文是“a rose by any other name”,语出莎翁《罗密欧与朱丽叶》第二幕第二场的“A rose by any other name would smell as sweet.”朱生豪先生译为:“姓名本来是没有意义的;我们叫做玫瑰的这一种花,要是换了个名字,他的香味还是同样的芬芳。”)如出一辙的演出。 […]

所以,如果你打算尝试一下这种方式,请自便。如果真的可能有一个完全非侵入性的(non-intrusive)解决方案出现,我将会认真思考是否要加入这样的特性。

现在有意思了:随着 Lilu 和 Amrita2 的到来,DHH 这段话是不是还当真呢?

查看英文原文: Rails Mockup Driven Development with Lilu

2007-07-09 00:001146
用户头像

发布了 74 篇内容, 共 14.4 次阅读, 收获喜欢 3 次。

关注

评论

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

npm,registry,镜像源,npm切换源,yarn,cnpm,taobao,nrs

CoderBin

npm 镜像源 Node 切换镜像源 npm镜像源

C++ 解引用与函数基础:内存地址、调用方法及声明

小万哥

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

酷睿Ultra下一代预览,Lunar Lake有惊人的100TOPS

E科讯

移动设备控制LED屏:无线技术与智能操作

Dylan

技术 电脑 设备 LED LED显示屏

Anolis OS 23.1 Alpha2 预览版:内核配置升级与软件选型新进展

OpenAnolis小助手

开源 操作系统 龙蜥操作系统

4 月15-18 日,龙蜥社区与你相约北美开源峰会

OpenAnolis小助手

开源 操作系统 EROFS 北美开源峰会

Amazon Q:对话智能赋能企业发展

亚马逊云科技 (Amazon Web Services)

#人工智能

构建多功能DApp项目:质押、私募、DeFi、分红等功能详解

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

倒计时4天!百度Create AI开发者大会“大模型与深度学习技术”论坛亮点抢鲜看!

百度安全

企业架构设计原则之业务导向性

凌晞

企业架构 架构设计 架构设计原则

企业架构设计原则之避免单行道

凌晞

企业架构 架构设计 架构设计原则

一文读懂Partisia Blockchain,被严重低估的隐私区块链生态

BlockChain先知

一款自研Python解释器

芯动大师

深入剖析JVM的OOM | 内存溢出如何影响JVM运行及应对策略

码界西柚

Java 性能优化 JVM 内存优化

@开发者,龙蜥社区邀您参加 2024 OceanBase 开发者大会

OpenAnolis小助手

开源 操作系统 OceanBase 开源 开发者大会

高性能网络SIG月度动态:virtio 动态中断调节优化、多项内核网络缺陷修复

OpenAnolis小助手

操作系统 高性能网络 龙蜥社区SIG

构建区块链质押挖矿系统:DApp质押挖矿系统开发需求详解

区块链软件开发推广运营

dapp开发 区块链开发 NFT开发 公链开发

Partisia Blockchain:被严重低估的隐私区块链生态

石头财经

龙蜥社区及开发者分获 2024 OS2ATC“最具影响力开源创新贡献和开源创新先锋”奖

OpenAnolis小助手

操作系统 国产操作系统 龙蜥社区

Cloud Kernel SIG 月度动态:ANCK 全面首次支持龙芯架构、海光四号处理器,以及适配兆芯等最新进展

OpenAnolis小助手

操作系统 内核 龙蜥社区 龙蜥sig

放心使用!龙蜥全系产品均不受 XZ 后门影响

OpenAnolis小助手

操作系统 漏洞 龙蜥社区 龙蜥操作系统

浪潮信息-龙蜥技术认证上线!实战培训 10 个名额,限量报名

OpenAnolis小助手

开源 操作系统 龙蜥社区

查看自动类型推导结果的方法

爱分享

编辑器 代码规范 C++11 C++ modern C++

手把手带你申请Sora内测资格,附申请提示词

蓉蓉

openai ChatGPT4 sora

Lilu:Rails Mockup驱动开发之道_Ruby_Sebastien Auvray_InfoQ精选文章