写点什么

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

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

关注

评论

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

设计与实现阶段的可靠性工作

阿泽🧸

6 月 优质更文活动

不止于快!巨湾技研发布凤凰电池技术,可实现全气候全电压平台极速充电

科技热闻

C语言编程语法—文件读写

芯动大师

C语言 二进制 6 月 优质更文活动

Vue-事件基本使用

不觉心动

6 月 优质更文活动

基于STM32+RC522设计的门禁系统

DS小龙哥

6 月 优质更文活动

Maxcompute数据上云一致性比对

阿里云大数据AI技术

大数据 数据集 企业号 6 月 PK 榜

深入理解Java线程池:线程池参数调优与技巧

xfgg

Java 线程池 6 月 优质更文活动

直播平台源码画面质量功能的实现

山东布谷科技

软件开发、 云算力模式系统开发源码 源码解读 直播系统 直播平台源码

从 PMO 的视角,看如何从 0 到 1 搭建研发效能体系?

思码逸研发效能

研发效能

美国同事的那些离职类型

HoneyMoose

整合开源治理经验,共谋开源社区发展|2023开放原子全球开源峰会开源社区治理与运营分论坛即将启幕

开放原子开源基金会

开源 开放原子全球开源峰会 开源社区治理与运营

MobPush 配置应用包名

MobTech袤博科技

初步了解RNN, Seq2Seq, Attention注意力机制

Studying_swz

6 月 优质更文活动

以安全为底线 共迎机遇和挑战|2023开放原子全球开源峰会可信基础设施技术分论坛即将启幕

开放原子开源基金会

开源 开放原子全球开源峰会 可信基础设施技术

轻量级分布式日志追踪-Tlog快速入门

javalover123

分布式 日志 Skywalking spring-boot Tlog

自动驾驶≠速度与激情

脑极体

自动驾驶

聊聊那些奇葩的代码规范 —— 所有 IntelliJ 的警告必须要处理

HoneyMoose

GreatSQL删除分区慢的跟踪

GreatSQL

greatsql greatsql社区

【Netty】「NIO」(一)认识 ByteBuffer

sidiot

后端 Netty java‘ 6 月 优质更文活动

地图实火!断货加印,限时折扣抢购通道开启

融云 RongCloud

社交 融云 泛娱乐 出海 wicc

跨端框架的兴起:WePY(微信小程序容器技术)

没有用户名丶

Serverless: AI everywhere的下一块拼图

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 6 月 PK 榜

Docker里的基础术语

穿过生命散发芬芳

Docker 6 月 优质更文活动

什么是CAS和ABA问题?如何解决?

javacn.site

2个原因解答:为什么网络安全缺口大,招聘却很少?

网络安全学海

黑客 网络安全 信息安全 渗透测试 WEB安全

2023-06-06:给你二叉树的根结点 root ,请你设计算法计算二叉树的 垂序遍历 序列。 对位于 (row, col) 的每个结点而言, 其左右子结点分别位于 (row + 1, col -

福大大架构师每日一题

golang rust 福大大

推动体系建设 助推融合发展|2023开放原子全球开源峰会软件物料清单(SBOM)分论坛即将启幕

开放原子开源基金会

开源 开放原子全球开源峰会 软件物料清单(SBOM)

Adobe 构建 IDP 之路的经验与教训

SEAL安全

IdP adobe 平台工程

动态修改coreThread线程池拓展

FunTester

什么时候 MySQL 查询会变慢?

江南一点雨

MySQL 数据库

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