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

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

关注

评论

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

实力认证!星汉未来正式加入中国通信企业协会

星汉未来

云原生 k8s 星汉未来 中国通信企业协会

如何高效的学习掌握新技术

程序员海军

高效率 7月月更

小海豚“变身”全新智能调度引擎,深入浅出在DDS的实践开发应用

白鲸开源

大数据 工作流调度 调度任务 分布式调度引擎 大数据调度

构建知识库时,如何避免最常见的几个错误?

Geek_da0866

AWS使用EC2降低DeepRacer的训练成本DeepRacer-for-cloud的实践操作

指剑

AWS Amazon EC2 deepracer

3步就能制作漫画头像的机器人,想拥有一个吗?

华为云开发者联盟

人工智能 动漫

软件调优方法有哪些?看看飞腾技术专家怎么说 | 龙蜥技术

OpenAnolis小助手

cpu io 服务器 龙蜥大讲堂 飞腾

Gpushare.com | 如何使用TensorBoardX可视化工具?

恒源云

深度学习 PyTorch tensorboard GPU算力

为什么知识库很重要?这是我听过最好的答案

Geek_da0866

创建企业wiki,你需要知道这些

Geek_da0866

图像处理解决方案 veImageX 技术演进之路

字节跳动视频云技术团队

计算机视觉 图像处理 图像压缩 图像增强算法

离开大厂,一周965+远程工作报告

无人之路

大厂 内卷 955 远程 WLB

如何编写您的常见问题页面?

Geek_da0866

建立的知识库的7个步骤

Geek_da0866

硕果累累,再获认可!「报告、标准、评测」洞见科技走在前沿

洞见科技

隐私计算

Dao智能合约Dapp系统开发技术

薇電13242772558

智能合约 dapp DAO

时代潮头,华为将风帆对准数字金融的风与海

脑极体

Flink数据源拆解分析(WikipediaEditsSource)

程序员欣宸

Java flink 7月月更

禅道项目管理软件的甘特图功能介绍

禅道项目管理

项目管理 甘特图 项目管理软件 禅道

乘势而上,OceanBase推动数字支付精益增长

OceanBase 数据库

AIRIOT答疑第5期|如何使用低代码业务流引擎?

AIRIOT

物联网

有数大数据基础平台之智能运维平台EasyEagle介绍:集群队列篇

网易数帆

大数据 数据智能 数据基础设施

华为云AI院长峰会在黔举行 推动人工智能产学研创新发展

极客天地

wallys/PD-60 802.3AT Input Output 802.3AT/AT 85% Efficiency 10/100/1000M GE Surge Protection

wallys-wifi6

MT7915/MT7975/IPQ6000

快速支持客户知识库的核心优势是什么?

Geek_da0866

如何为您的企业设置内部Wiki?

Geek_da0866

区块链开发:如何从 Solidity 智能合约中发送和取款

devpoint

区块链 Solidity 7月月更

NFTScan 与 Atem Network 在 NFT 数据领域达成战略合作

NFT Research

NFT NFTScan

中移链(基于EOS)测试环境搭建

BSN研习社

二进制SCA指纹提取黑科技:Go语言逆向技术

华为云开发者联盟

云计算 安全 后端

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