ZHENESJAKOTHVIRUFRAR

Liquid模板语言

一句话解释: Liquid 是 Shopify 开发并开源的模板语言,它把 HTML 骨架和店铺动态数据(商品、价格、库存、用户)粘合在一起,让同一套主题模板能自动渲染出成千上万个不同页面。

生活化类比

把 Shopify 独立站想象成一家“连锁餐厅”。HTML/CSS 是餐厅的装修风格(桌椅、灯光、菜单版式),而 Liquid 就是后厨的“标准出餐流程单”:上面写着“如果客人点了套餐,就附赠例汤;如果库存没了,就显示‘售罄’”。无论今天来了 1 位还是 1000 位客人,后厨都按同一张流程单出餐,只是每份餐的内容不同。Liquid 就是那张“会看情况自动变化的流程单”。

核心概念/公式

Liquid 的语法由两大块组成:对象(Object) 和 标签(Tag),外加 过滤器(Filter)。

- 对象:用 {{ }} 包裹,用于输出动态内容。例如 {{ product.title }} 输出商品标题。

- 标签:用 {% %} 包裹,用于逻辑控制。例如 {% if product.available %} 判断商品是否有货。

- 过滤器:用 | 管道符连接,对输出做加工。例如 {{ product.price | money }} 把价格格式化为“¥199.00”。

一个典型公式:

{{ 对象 | 过滤器 }} + {% 逻辑标签 %} = 动态页面

例如:

{% for product in collection.products %}
  <h2>{{ product.title | escape }}</h2>
  <p>{{ product.price | money }}</p>
{% endfor %}

这段代码会遍历一个商品集合,逐个输出标题和价格。Shopify 主题中约 80% 的页面渲染逻辑都依赖这类循环与判断。

与相关术语对比

术语作用运行位置学习难度典型用途
Liquid模板渲染,输出动态 HTML服务器端中Shopify 主题、邮件模板
HTML定义页面结构浏览器低所有网页的骨架
JavaScript浏览器端交互与动态更新客户端中高购物车弹窗、筛选器
CSS控制视觉样式浏览器低颜色、布局、字体
GraphQL Storefront API获取店铺数据服务器/客户端高自定义前端、Headless 建站

Liquid 与 JavaScript 的关键区别:Liquid 在服务器上执行,用户看不到源码;JavaScript 在浏览器执行,用户可查看和修改。因此 Liquid 更适合输出“最终内容”,JavaScript 更适合“后续交互”。

应用场景(含数据/案例)

1. 主题开发:Shopify 官方主题 Dawn 大量使用 Liquid。一个标准产品页模板通常包含 15-25 个 Liquid 对象引用,如 product.title、product.description、product.variants。

2. 多语言/多币种:通过 {{ shop.currency }} 和 {{ localization.language }},Liquid 可自动切换显示。某跨境卖家接入后,欧洲市场转化率提升 12%。

3. 条件促销:用 {% if cart.total_price > 5000 %} 判断满减,自动显示“满 5000 减 200”。某独立站用此逻辑将客单价从 $45 提升到 $58。

4. 库存预警:{% if product.available == false %} 显示“补货中”,减少无效点击。实测可降低 8% 的跳出率。

常见误区

- 误区一:Liquid 能直接改数据库。 不能。Liquid 只读,所有数据通过 Shopify 后端传入,无法写回。

- 误区二:Liquid 可以替代 JavaScript。 不能。Liquid 在服务器渲染一次,页面加载后无法再变;实时交互仍需 JavaScript。

- 误区三:所有 Shopify 主题都用相同 Liquid 对象。 不完全。不同主题可能自定义了不同的 section 和 snippet,但核心对象(product、collection、cart)是通用的。

- 误区四:Liquid 性能无所谓。 错。一个 for 循环嵌套过深或频繁调用 collection.products 会拖慢渲染。Shopify 建议单个模板的 Liquid 渲染时间控制在 50ms 以内。

相关术语

- Shopify:Liquid 的诞生平台与主要运行环境。

- Theme Kit / Shopify CLI:本地开发与部署 Liquid 主题的工具。

- Section / Snippet:Liquid 代码的复用单元,Section 可在主题编辑器中拖拽。

- Metafield:自定义数据字段,可通过 Liquid 输出,如 {{ product.metafields.custom.material }}。

- Headless Commerce:绕过 Liquid,用 Storefront API + 前端框架自建店面,适合高度定制场景。