2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

HAML:简洁高效就是美

  • 2007-05-18
  • 本文字数:1363 字

    阅读完需:约 4 分钟

Dan Grigsby 在他对Haml 精采绝伦的介绍中,对 Greenspun 第十编程法则改头换面,炮制了 Grigsby 第一法则:

“任何足够复杂的 rhtml partial 里面都包含了一个特别的非正式定义并充满 Bug 且实现了一半的 Haml。”

那么 Haml 到底是什么?Haml 的作者 Hampton Catlin 如是说:

“Haml 是对传统 XHTML 的生成方式的一种反叛。它既不是纯粹的代码,也不是一种文本处理语言。它是与众不同的,是一种在我看来最为自然的 XHTML 构造方式。”

此外, Haml 的网站上说:“Haml 让你撇开臃肿丑陋的模板,将它们以优雅整洁的代码代替。”下面我们先来简单看看到底丑陋的模板会是什么样子,而优雅整洁的代码又是如何:

下面是一个“丑陋模板”的范例:

<div id="profile"><br></br> <div class="left column"><br></br> <div id="date"><%= print_date %></div><br></br> </div><br></br> <div class="right column"><br></br> <div id="email"><%= current_user.email %></div><br></br> <div id="bio"><%= h current_user.bio %></div><br></br> </div><br></br></div>你可以看见,这只是标准的 HTML/ERb 的代码片断。对于你来说,这可能不会那么刺激审美神经。然而,正如 Grigsby 在他的文章中巧妙地解释到的,不仅仅里面会存在许多重复,而且也会出现很多不必要的字符。Hampton 认为,标识语言应该是赏心悦目的,而且不是所有能赏心悦目的东西都很好,他认为能优雅到让你开发速度更快,这才是最好的。因此,从这点出发,输出同样结果的代码片段子 Haml 看起来应该是这样的:

#profile<br></br> .left.column<br></br> #date= print_date<br></br> #address= current_user.address<br></br> .right.column<br></br> #email= current_user.email<br></br> #bio= h(current_user.bio)这看起来可能会有点奇怪,不过你不得不承认的是,这代码瘦下来好多。值得注意的是,代码中大量使用了空格来消除 HTML 的闭合标签,并使用 CSS 风格的语法来描述 div 的 id 和 class,而且消除了难看的<%= %>标签。如果你比较一下两个版本字符数的大小,你会发现范例中 Haml 版本的字符数是 HTML 版本的 64%。这就意味着你可以少输入 36% 的字符、少读 36% 的字符。归根到底就是少了 36% 的碍眼的东西。Antoine de Saint-Exupery 对 Haml 给于了高度评价:“在没有什么可以去除,而不是什么都加不进去的时候,十全十美的目标就达到了。”

从大家对 Haml 的反应来看,评价褒贬不一。有不少 Ruby 狂热分子会把它和 Python 相提并论,因为它大量使用了空格缩进。然而,Hampton 一行 Python 代码都没有写过,他只是觉得空格可以在文档中可以表示结构。他认为 Haml 更像 YAML 而不是 Python,因为它更专注于文档的结构和数据的配置。

新的视点总是有自己一席之地的,DHH 也同意说:“我不能肯定这符合我的口味,但我非常欣赏从另一个角度思考问题的意愿。”社区同样也表示支持态度,因为关于 Haml 的活动和讨论也很是热烈。Hampton 拿着不断发展的社区开起玩笑说:

“在 Haml 的论坛上面晃我感觉总是很奇怪,我感觉我是在读大家对一门技术写的情书。;)”

Hampton 认为,你只需要花 20 分钟就会喜欢上 Haml 的简洁。不过,Grigsby 不同意这个观点,他认为 2 分钟足矣。

要了解更多关于 Haml 的信息,请看 Grigsby 的介绍 Haml 网站

查看英文原文: HAML: The Beauty of Efficiency

2007-05-18 03:0011404
用户头像

发布了 117 篇内容, 共 18.5 次阅读, 收获喜欢 0 次。

关注

评论

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

Windows Server 2022 中文版、英文版下载 (2025 年 4 月更新)

sysin

Windows Server

Nessus Professional 10.8.4 Auto Installer for Ubuntu 24.04

sysin

Nessus

CAD二次开发的上线流程

北京木奇移动技术有限公司

软件外包公司 CAD二次开发 CAD开发公司

Nessus Professional 10.8.4 Auto Installer for RHEL 9, AlmaLinux 9, Rocky Linux 9

sysin

Nessus

MES管理系统:解决排产难题,提升企业竞争力

万界星空科技

生产管理系统 mes 制造业工厂 生产排班排产 智能排产

「DeepSeek-V3 技术解析」:DeepSeek-V3-Base 预训练阶段解析

Baihai IDP

人工智能 程序员 AI LLMs DeepSeek

Nexpose 8.3.0 发布 - 领先的漏洞管理解决方案

sysin

Nexpose

Tenable Nessus 10.8.4 发布 - 领先的漏洞评估解决方案

sysin

Nessus

Burp Suite Professional 2025.4 for Windows x64 - 领先的 Web 渗透测试软件

sysin

burp

Burp Suite Professional 2025.4 for macOS x64 & ARM64 - 领先的 Web 渗透测试软件

sysin

burp

Cisco NX-OS Software Release 9.3(15) - 数据中心网络操作系统

sysin

Cisco

CST软件如何计算CMA中的模式加权系数MWC

思茂信息

cst操作 CST软件 CST Studio Suite

aiXcoder上新Agent,内置MCP功能,端到端智能实现软件开发任务

新消费日报

人工智能与增强现实购物体验:如何用AR与AI结合提升电商互动性?

天津汇柏科技有限公司

人工智能 增强现实 AI 人工智能

macOS Sequoia 15.4.1 (24E263) Boot ISO 原版可引导镜像下载

sysin

macos

融云「国家级通信产品」在沙特的交付实践

融云 RongCloud

基于亚马逊云科技 Amazon Bedrock Tool Use 实现 Generative UI

亚马逊云科技 (Amazon Web Services)

Burp Suite Professional 2025.4 发布 - Web 应用安全、测试和扫描

sysin

burp

CAD二次开发的性能调优

北京木奇移动技术有限公司

软件外包公司 CAD二次开发 CAD开发公司

AI智上 | 数智预算:业财数融 智算未来

用友智能财务

GitHub 上 Star 数排名前 40 的开发者工具

NocoBase

GitHub 开源 低代码 零代码 开发工具

Meta Llama 4大模型评价与分析

测试人

人工智能

Windows Server 2025 OVF (2025 年 4 月更新) - VMware 虚拟机模板

sysin

Windows Server

DeepSeek模型MOE结构代码详解

AI布道Mr.Jin

Cisco Nexus Dashboard 3.2(2f) - 云和数据中心网络管理软件

sysin

Cisco

GPT-4 即将退役,你准备好迎接 AI 的下一波冲击了吗?

测试人

人工智能

2025 腾讯云城市峰会 •成都峰会 Al+办公协同创新专场 智启未来办公 驱动提效增长

人称T客

【HarmonyOS 5】makeObserved接口详解

GeorgeGcs

Windows Server 2022 OVF (2025 年 4 月更新) - VMware 虚拟机模板

sysin

Windows Server

Windows Server 2025 中文版、英文版下载 (2025 年 4 月更新)

sysin

Windows Server

Nessus Professional 10.8.4 Auto Installer for Windows

sysin

Nessus

HAML:简洁高效就是美_Ruby_Sam Aaron_InfoQ精选文章