AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

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

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

关注

评论

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

结算系统开发,直销系统开发,交易所开发,dapp开发,公链开发 商城开发,

Geek_8da502

瑞技案例 | 优雅焕新,Neat 重塑法国再保险混合办公体验

Bytebridge

混合办公 Neat 会议室升级 瑞技科技 Bytebridge

一文读懂 ChatGPT 工作原理

秃头小帅oi

低代码 AIGC ChatGPT

软件测试/人工智能|Python 变量解析:从基础概念到内存地址探究

霍格沃兹测试开发学社

每日一题:LeetCode-76. 最小覆盖子串

Geek_4z9ami

面试 算法 LeetCode 刷题 字符串

Amoro 试用&贡献活动 | 10月社区评选揭晓

Amoro Community

大数据 开源 湖仓一体

腾讯云大数据ES荣获信通院优秀案例奖,云原生实力再获认可!

腾讯云大数据

ES

10 | 递归:如何用三行代码找到“最终推荐人”.md

鲁米

解决云电脑无法使用本地终端连接的USB设备

天翼云开发者社区

云计算 云电脑

云电脑:IO虚拟化实现的技术分析

天翼云开发者社区

云计算 虚拟化 云电脑

特权账号管理之医疗行业篇

尚思卓越

数据库 运维 网络安全

行云创新:与德国汽车业交流Catena-X数据空间技术有感

行云创新

平台工程 行云创新 Catena-X 云原生平台工程 数据共享空间

大型语言模型在实体关系提取中的应用探索

数由科技

Embedding LLM rag 实体关系识别

VPN证书过期问题梳理

Lane

如何实现通过API接口对商品信息进行实时更新和维护?

技术冰糖葫芦

API 文档

安全加密传输大文件对金融行业的意义以及重要性

镭速

大文件传输 加密传输大文件

商城开发

Geek_8da502

重磅!天翼云斩获2023年中国通信学会科学技术奖一等奖

天翼云开发者社区

云计算

【哈尔滨学院主办】第三届高性能计算与通信工程国际学术会议(HPCCE 2023)

搞科研的小刘

通信 计算机 高性能计算 通信工程

inBuilder低代码平台新特性推荐-第十三期

inBuilder低代码平台

开源 低代码

LCM:大大加快生成高质量图像的新方法

互联网工科生

图像生成 LCM

软件测试/人工智能|Python 数据类型解析:探索编程世界的多样性

霍格沃兹测试开发学社

最新大文件传输解决方案,一站式解决网站文件上传下载速度慢问题

镭速

大文件传输

文心一言 VS 讯飞星火 VS chatgpt (149)-- 算法导论12.2 4题

福大大架构师每日一题

福大大架构师每日一题

数实融合!低代码推动工业数字化转型走“深”向“实”

优秀

低代码 数字化转型 工业数字化

软件测试/人工智能|Python 数据类型转换解析:理解数据之间的灵活转换

霍格沃兹测试开发学社

如何撰写How-To文章:7个高效步骤(新手SEOer向导)

九凌网络

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