写点什么

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

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

关注

评论

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

基于Redis sentinel的千万级学生管理系统的考试试卷存储方案

Geek_e8bfe4

redis内存优化

乌龟哥哥

6月月更

ImportSelector与DeferredImportSelector的区别(spring4)

程序员欣宸

Java spring SpringFramework 6月月更

我理解的微服务 -- 读《微服务设计模式》总结

潜水员

golang 微服务

解决k8s调度不均衡问题

劼哥stone

Kubernetes 云原生 调度 调度不均衡 kube-scheduler

【Spring 学习笔记(十四)】Spring AOP 通知中获取数据

倔强的牛角

Java spring 6月月更

Java Core 「12」ReentrantLock 再探析

Samson

学习笔记 Java core 6月月更

千万级学生管理系统考试试卷存储方案

地下地上

架构实战营

在线多行文本行转列工具

入门小站

工具

架构实战营模块4作业

挖了蘑菇哩斯

架构实战营 存储方案

【Python技能树共建】字符编码与解码

梦想橡皮擦

Python 6月月更

初创公司,如何拥有企业级Java脚手架

昵称不能为null

Java脚手架 企业级代码架构

远程办公三部曲 - 如何提高工作效率| 社区征文

耳东@Erdong

工作效率 远程办公 6月月更 初夏征文

LabVIEW Arduino RS-485智能农业监测系统(项目篇—4)

不脱发的程序猿

传感器 智慧农业 LabVIEW Arduino RS-485智能农业监测系统

C语言中奇妙又有趣的符号——C语言运算(操作)符

未见花闻

6月月更

wapper解析

卢卡多多

6月月更

DOM

Jason199

DOM js 6月月更

【作业四 千万级学生管理系统的考试试卷存储方案】

wuli洋

Python 设计模式:原型模式

宇宙之一粟

设计模式 原型模式 6月月更

千万级学生管理系统试卷存储方案(架构实战营 模块四作业)

Gor

linux几个不常用但是很有用的命令

入门小站

Linux

JVM调优简要思想及简单案例-JVM分代模型

zarmnosaj

6月月更

课程背景

IT蜗壳-Tango

6月月更

618战报销冠谜底:“收割机”联想屠榜背后的三大利器是什么?

脑极体

uni-app进阶之生命周期【day8】

恒山其若陋兮

6月月更

架构实战营模块 4 作业

Roy

架构实战营

在线JSON转TSV工具

入门小站

工具

echo命令实用技巧

Nick

Docker 镜像源 echo 6月月更 tldr

leetcode 542. 01 Matrix 01 矩阵(中等)

okokabcd

LeetCode 动态规划 数据结构与算法

GetX 响应式状态管理简介

岛上码农

flutter ios 安卓 跨平台应用 6月月更

scanf的使用,cin和scanf的区别

工程师日月

6月月更

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