生成式AI领域的最新成果都在这里!抢 QCon 展区门票 了解详情
写点什么

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

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

关注

评论

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

CTO离职前悄悄和我说,吃透这5本Java核心技术笔记,涨薪特别简单

Java~~~

Java MySQL spring 架构 面试

无场景不智能-面向场景的智能运维算法体系

云智慧AIOps社区

算法 日志 场景 智能运维 数据指标

TLS协议分析 (七) 安全性分析

OpenIM

这个 TCP 问题你得懂:Cannot assign requested address

AlwaysBeta

Linux TCP TCP/IP Linux内核 TCP协议

横空出世!复盘B站面试坑我最深的Java并发:JDK源码剖析

Java~~~

Java 源码 架构 jdk 面试

太强了!京东首席架构师深邃洞察:服务化+云原生+微服务

Java~~~

Java 架构 面试 云原生 架构师

云智慧AIOps研究院来咯~

云智慧AIOps社区

技术 算法 数据 智能运维 指标

“IBP在城市大脑项目中的应用”入选工信部2021年大数据产业发展试点示范项目名单

浪潮云

云计算

加速国产开源软件创新,云智慧AIOps社区正式发布

云智慧AIOps社区

开源 算法 数据 场景 智能运维

GAIA:智能运维领域通用公开数据集

云智慧AIOps社区

算法 AIOPS 数据集 场景 智能运维

别慌!阿里专家破SpringBoot:入门+基础+进阶+项目

Java~~~

Java 数据库 架构 面试 Spring Boot

收藏!阿里P9耗时28天,总结历年亿级活动高并发系统设计手册

Java~~~

Java 架构 面试 高并发 系统

无敌!阿里巴巴开源落地可实操项目:网约车+咚宝商城+英雄传说

Java~~~

Java 架构 面试 项目 架构师

GitHub上标星120K!Alibaba官网发布了这份Java全栈知识体系手册

Java~~~

Java 架构 面试 JVM 多线程

如何让项目准时上线?

石云升

项目管理 管理 引航计划 内容合集 9月日更

一文搞懂音视频开发技术点及职业发展方向

赖猫

c++ android 音视频

TLS协议分析 (六) handshake协议扩展

OpenIM

机器学题平台PAI论文入选国际顶会KDD-构建端到端的大规模AI工程能力

阿里云大数据AI技术

Filecoin价格今日走势:filecoin暴涨!Filecoin未来会涨到多少钱?

区块链 分布式存储 filecoin未来价格预测? filecoin价格走势 filecoin大涨

10款低/无代码开发平台哪个才是适合你的?

低代码小观

程序员 低代码 无代码 低代码平台 无代码平台

百度短视频推荐系统的目标设计

百度Geek说

架构 后端 推荐系统 短视频

必杀器!鹅厂首推569页Netty+Redis+ZK+高并发

Java~~~

Java redis 架构 面试 Netty

阿里内部架构解密:网络+分布式+RPC+消息中间件+微服务

Java~~~

Java spring 架构 面试 微服务

27W字总结阿里Java高并发编程:案例+源码+面试+系统架构设计

Java~~~

Java 架构 面试 算法 多线程

云智慧智能研究院实习生招聘信息~只等优秀的你!

云智慧AIOps社区

深度学习 招聘 异常检测 实习 智能运维

职场浅谈三则

姬翔

9月日更

阿里内部最新“SpringCloudAlibaba学习笔记”出炉

Java 阿里巴巴 架构 面试 微服务

基于深度学习的日志异常检测

云智慧AIOps社区

深度学习 招聘 异常检测 实习 智能运维

交易所刷量机器人定制开发,刷k线机器人搭建

量化系统19942438797

交易所 市值机器人

pyhanlp 添加自定义词典(qbit)

qbit

Python nlp 分词

【网络安全】记一次挖洞的日常

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 安全漏洞

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