写点什么

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

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

关注

评论

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

小程序支持MQTT协议

风翱

小程序 websocket mqtt 4月日更

spring中让你眼前一亮的代码技巧

AI乔治

Java spring 架构 微服务

代码回现 | 如何实现交易反欺诈?

VoltDB

数据分析 金融科技 VoltDB

python列表转字符串

ベ布小禅

4月日更

每天学一个 Linux 命令(2):shutdown

民工哥

Linux 程序员 运维

聪明人的训练(十四)

Changing Lin

4月日更

面试官:聊一聊SpringBoot服务监控机制

AI乔治

Java spring 架构 微服务 springboot

阿里巴巴架构师王小瑞“墙裂”推荐:RocketMQ核心实战原理

Java架构师迁哥

理论 + 标准 + 工程 —— 阿里云视频云编码优化的思考与发现

阿里云CloudImagine

阿里云 视频编码 视频算法 视频处理

阿里总结出Java九大核心专题,1159页内容,吃透后我上个月砍下5个大厂Offer!

Java架构追梦

Java 阿里巴巴 架构 面试 九大核心专题

一份完美的阿里开源Java面试宝典,Github上star数已30K+

Java架构师迁哥

全国沿海港口首个区块链木材业务服务平台上线试运行,“区块链+港口”撬动数千万元“福利”

CECBC

港口

portal认证-上线流程

箭上有毒

从中国企业进入IEC最高决策机构,看科技领先的产业价值与用户价值

脑极体

入职字节跳动那一天,我哭了(蘑菇街被裁,奋战7个月拿下offer)

Java架构追梦

Java 架构 字节跳动 面试

工业互联网的脖子被卡死了?

工业互联网

架构实战营 - 模块 2- 作业

carl

架构实战营

2021金三银四:狂刷398道Java最新MySQL笔记;成功收获9个Offer

比伯

Java MySQL 编程 架构 计算机

一个CURD三年的Java程序员刷完这份《阿里面试指南(恒山版)》,居然斩获了十七个offer

Java架构之路

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

特权访问管理(PAM)即服务

龙归科技

自学Java走进阿里,仅用了六个月,他是怎么做到的?

Java架构师迁哥

一篇文章了解CI/CD管道全流程

禅道项目管理

DevOps 持续集成 持续交付

云上接单不空跑 京东云助力“佬司机”为货运物流业降本增效

CECBC

京东云

当造车成为风潮,谁帮助“造车党”连接未来?

脑极体

卧槽,误删数据库了,会被开除吗?

AI乔治

Java 数据库 sql 架构 SQL语法

每天一个 Linux 命令(1):cd

民工哥

Linux 运维

canvas小球绕斜椭圆轨迹运动

空城机

JavaScript 大前端 canvas 4月日更

硬核!阿里内部这份《Java面试核心知识手册》在Github上已获赞高达89.7K!

Java架构之路

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

GitHub持续霸榜!2021年Java核心知识:面试突击版

Java架构之路

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

如果以这样的方式,你愿参与到碳普惠行动中吗?

CECBC

区块链

剖析6个MySQL死锁案例的原因以及死锁预防策略

北游学Java

Java MySQL 数据库 死锁

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