mirror of
https://github.com/harttle/liquidjs.git
synced 2026-09-15 12:20:40 -07:00
400 lines
56 KiB
HTML
400 lines
56 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="zh-cn">
|
|
<head prefix="og: https://ogp.me/ns#">
|
|
<meta charset="utf-8">
|
|
<title>静态模板分析 | LiquidJS</title>
|
|
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<meta name="description" content="LiquidJS is a simple, expressive and safe Shopify / GitHub Pages compatible template engine in pure JavaScript.">
|
|
<link rel="dns-prefetch" href="https://cdn.jsdelivr.net/">
|
|
<link rel="manifest" href="/zh-cn/manifest.json">
|
|
<!-- Canonical links -->
|
|
<link rel="canonical" href="https://liquidjs.com/zh-cn/tutorials/static-analysis.html">
|
|
<!-- Alternative links -->
|
|
|
|
|
|
<link rel="alternative" hreflang="en" href="https://liquidjs.com/zh-cn/tutorials/static-analysis">
|
|
|
|
<link rel="alternative" hreflang="zh-cn" href="https://liquidjs.com/zh-cn/zh-cn/tutorials/static-analysis">
|
|
|
|
|
|
<!-- Icon -->
|
|
<link rel="apple-touch-icon" sizes="57x57" href="../../icon/apple-touch-icon-57x57.png">
|
|
<link rel="apple-touch-icon" sizes="114x114" href="../../icon/apple-touch-icon-114x114.png">
|
|
<link rel="apple-touch-icon" sizes="72x72" href="../../icon/apple-touch-icon-72x72.png">
|
|
<link rel="apple-touch-icon" sizes="144x144" href="../../icon/apple-touch-icon-144x144.png">
|
|
<link rel="apple-touch-icon" sizes="60x60" href="../../icon/apple-touch-icon-60x60.png">
|
|
<link rel="apple-touch-icon" sizes="120x120" href="../../icon/apple-touch-icon-120x120.png">
|
|
<link rel="apple-touch-icon" sizes="76x76" href="../../icon/apple-touch-icon-76x76.png">
|
|
<link rel="apple-touch-icon" sizes="152x152" href="../../icon/apple-touch-icon-152x152.png">
|
|
<link rel="icon" type="image/png" href="../../icon/favicon-196x196.png" sizes="196x196">
|
|
<link rel="icon" type="image/png" href="../../icon/favicon-160x160.png" sizes="160x160">
|
|
<link rel="icon" type="image/png" href="../../icon/favicon-96x96.png" sizes="96x96">
|
|
<link rel="icon" type="image/png" href="../../icon/favicon-16x16.png" sizes="16x16">
|
|
<link rel="icon" type="image/png" href="../../icon/favicon-32x32.png" sizes="32x32">
|
|
<meta name="msapplication-TileColor" content="#2f83cd">
|
|
<meta name="msapplication-TileImage" content="../../icon/mstile-144x144.png">
|
|
|
|
<link rel="stylesheet" href="../../css/navy.css">
|
|
|
|
<link rel="alternate" href="../../atom.xml" title="LiquidJS" type="application/atom+xml">
|
|
<meta name="generator" content="Hexo 7.3.0"></head>
|
|
|
|
<body>
|
|
<div id="container">
|
|
<header id="header" class="wrapper">
|
|
<div id="header-inner" class="inner">
|
|
<h1 id="logo-wrap">
|
|
<a href="/zh-cn/" id="logo">LiquidJS</a>
|
|
</h1>
|
|
<nav id="main-nav">
|
|
<a href="intro-to-liquid.html" class="main-nav-link">教程</a><a href="../tags/overview.html" class="main-nav-link">标签</a><a href="../filters/overview.html" class="main-nav-link">过滤器</a><a href="../playground.html" class="main-nav-link">演示</a><a href="../../api/classes/Liquid.html" class="main-nav-link">API</a>
|
|
<div id="search-input-wrap">
|
|
<i id="search-input-icon" class="icon-search"></i>
|
|
<input type="search" id="search-input" placeholder="搜索...">
|
|
</div>
|
|
</nav>
|
|
<div class="main-nav-link icon-nav-link">
|
|
<label><i class="icon-network"></i> <span class="icon-nav-title">简体中文</span></label>
|
|
<select id="lang-select" data-canonical="tutorials/static-analysis.html">
|
|
|
|
<option value="en">English</option>
|
|
|
|
<option value="zh-cn" selected>简体中文</option>
|
|
|
|
</select>
|
|
</div>
|
|
<a target="_blank" rel="noopener external nofollow noreferrer" href="https://github.com/harttle/liquidjs" class="main-nav-link icon-nav-link"><i class="icon-github"></i> <span class="icon-nav-title">GitHub</span></a>
|
|
<a id="mobile-nav-toggle">
|
|
<span class="mobile-nav-toggle-bar"></span>
|
|
<span class="mobile-nav-toggle-bar"></span>
|
|
<span class="mobile-nav-toggle-bar"></span>
|
|
</a>
|
|
</div>
|
|
</header>
|
|
|
|
<div id="content-wrap">
|
|
<div id="content" class="wrapper">
|
|
<div id="content-inner">
|
|
<aside id="sidebar" role="navigation">
|
|
<div class="inner">
|
|
<strong class="sidebar-title">开始使用</strong><a href="intro-to-liquid.html" class="sidebar-link">Liquid 简介</a><a href="setup.html" class="sidebar-link">安装</a><a href="options.html" class="sidebar-link">选项</a><a href="render-file.html" class="sidebar-link">文件渲染</a><a href="partials-and-layouts.html" class="sidebar-link">引用/继承</a><a href="use-in-expressjs.html" class="sidebar-link">Express.js 中使用</a><strong class="sidebar-title">高级主题</strong><a href="caching.html" class="sidebar-link">缓存</a><a href="escaping.html" class="sidebar-link">转义</a><a href="register-filters-tags.html" class="sidebar-link">注册标签/过滤器</a><a href="access-scope-in-filters.html" class="sidebar-link">过滤器里访问上下文</a><a href="parse-parameters.html" class="sidebar-link">参数解析</a><a href="render-tag-content.html" class="sidebar-link">渲染标签内容</a><a href="drops.html" class="sidebar-link">Liquid Drop</a><a href="sync-and-async.html" class="sidebar-link">同步和异步</a><a href="whitespace-control.html" class="sidebar-link">换行和缩进</a><a href="plugins.html" class="sidebar-link">插件</a><a href="operators.html" class="sidebar-link">运算符</a><a href="truthy-and-falsy.html" class="sidebar-link">真和假</a><a href="dos.html" class="sidebar-link">DoS</a><a href="static-analysis.html" class="sidebar-link current">静态分析</a><strong class="sidebar-title">其他</strong><a href="migrate-to-9.html" class="sidebar-link">迁移到 LiquidJS 9</a><a href="changelog.html" class="sidebar-link">更新日志</a><a href="differences.html" class="sidebar-link">与 Shopify/liquid 的不同</a><a href="contribution-guidelines.html" class="sidebar-link">贡献指南</a>
|
|
</div>
|
|
</aside>
|
|
<article class="article-container" itemscope itemtype="https://schema.org/Article">
|
|
<div class="article-inner">
|
|
<div class="article">
|
|
<div class="inner">
|
|
<header class="article-header">
|
|
<h1 class="article-title" itemprop="name">静态模板分析</h1>
|
|
|
|
<a target="_blank" rel="noopener external nofollow noreferrer" href="https://github.com/harttle/liquidjs/edit/master/docs/source/zh-cn/tutorials/static-analysis.md" class="article-edit-link" title="改进这篇文档"><i class="icon-pencil"></i></a>
|
|
|
|
</header>
|
|
<div class="article-content" itemprop="articleBody">
|
|
<p class="since">v10.20.0</p>
|
|
|
|
<blockquote class="note warn"><strong class="note-title">实验性功能</strong><p>这是一个实验性功能,未来的 API 可能会发生变化,返回的内部结构也可能在不进行主要版本更新的情况下更改。</p>
|
|
</blockquote>
|
|
|
|
<blockquote class="note info"><strong class="note-title">同步与异步</strong><p>本文中的每种方法都提供了同步和异步版本。请参阅 [Liquid API][liquid-api] 了解完整的参考信息。 </p>
|
|
</blockquote>
|
|
|
|
<h2 id="变量" class="article-heading"><a href="#变量" class="headerlink" title="变量"></a>变量<a class="article-anchor" href="#变量" aria-hidden="true"></a></h2><p>可以使用 <code>Liquid.variables(template)</code> 方法获取模板中使用的变量名称。它会返回一个字符串数组,每个字符串代表一个不同的变量,不包括其属性。</p>
|
|
<pre class="line-numbers language-javascript" data-language="javascript"><code class="language-javascript"><span class="token keyword">import</span> <span class="token punctuation">{</span> Liquid <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'liquidjs'</span>
|
|
|
|
<span class="token keyword">const</span> engine <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Liquid</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
|
|
|
<span class="token keyword">const</span> template <span class="token operator">=</span> engine<span class="token punctuation">.</span><span class="token function">parse</span><span class="token punctuation">(</span><span class="token template-string"><span class="token template-punctuation string">`</span><span class="token string">
|
|
<p>
|
|
{% assign title = user.title | capitalize %}
|
|
{{ title }} {{ user.first_name | default: user.name }} {{ user.last_name }}
|
|
{% if user.address %}
|
|
{{ user.address.line1 }}
|
|
{% else %}
|
|
{{ user.email_addresses[0] }}
|
|
{% for email in user.email_addresses %}
|
|
- {{ email }}
|
|
{% endfor %}
|
|
{% endif %}
|
|
{{ a[b.c].d }}
|
|
<p>
|
|
</span><span class="token template-punctuation string">`</span></span><span class="token punctuation">)</span>
|
|
|
|
console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>engine<span class="token punctuation">.</span><span class="token function">variablesSync</span><span class="token punctuation">(</span>template<span class="token punctuation">)</span><span class="token punctuation">)</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>
|
|
|
|
<p><strong>输出</strong></p>
|
|
<pre class="line-numbers language-javascript" data-language="javascript"><code class="language-javascript"><span class="token punctuation">[</span> <span class="token string">'user'</span><span class="token punctuation">,</span> <span class="token string">'title'</span><span class="token punctuation">,</span> <span class="token string">'email'</span><span class="token punctuation">,</span> <span class="token string">'a'</span><span class="token punctuation">,</span> <span class="token string">'b'</span> <span class="token punctuation">]</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre>
|
|
|
|
<p>可以看到,标签和过滤器参数中的变量也会包含在内,例如示例中的嵌套变量 <code>b</code>。<br>另外,可以使用 <code>Liquid.fullVariables(template)</code> 方法获取包含其属性的完整变量列表。</p>
|
|
<pre class="line-numbers language-javascript" data-language="javascript"><code class="language-javascript"><span class="token comment">// 上例继续</span>
|
|
engine<span class="token punctuation">.</span><span class="token function">fullVariables</span><span class="token punctuation">(</span>template<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">then</span><span class="token punctuation">(</span>console<span class="token punctuation">.</span>log<span class="token punctuation">)</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span></span></code></pre>
|
|
|
|
<p><strong>输出</strong></p>
|
|
<pre class="line-numbers language-javascript" data-language="javascript"><code class="language-javascript"><span class="token punctuation">[</span>
|
|
<span class="token string">'user.title'</span><span class="token punctuation">,</span>
|
|
<span class="token string">'user.first_name'</span><span class="token punctuation">,</span>
|
|
<span class="token string">'user.name'</span><span class="token punctuation">,</span>
|
|
<span class="token string">'user.last_name'</span><span class="token punctuation">,</span>
|
|
<span class="token string">'user.address'</span><span class="token punctuation">,</span>
|
|
<span class="token string">'user.address.line1'</span><span class="token punctuation">,</span>
|
|
<span class="token string">'user.email_addresses[0]'</span><span class="token punctuation">,</span>
|
|
<span class="token string">'user.email_addresses'</span><span class="token punctuation">,</span>
|
|
<span class="token string">'title'</span><span class="token punctuation">,</span>
|
|
<span class="token string">'email'</span><span class="token punctuation">,</span>
|
|
<span class="token string">'a[b.c].d'</span><span class="token punctuation">,</span>
|
|
<span class="token string">'b.c'</span>
|
|
<span class="token punctuation">]</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>
|
|
|
|
<p>或者,使用 <code>Liquid.variableSegments(template)</code> 获取每个变量路径的字符串和数字数组。</p>
|
|
<pre class="line-numbers language-javascript" data-language="javascript"><code class="language-javascript"><span class="token comment">// 上例继续</span>
|
|
engine<span class="token punctuation">.</span><span class="token function">variableSegments</span><span class="token punctuation">(</span>template<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">then</span><span class="token punctuation">(</span>console<span class="token punctuation">.</span>log<span class="token punctuation">)</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span></span></code></pre>
|
|
|
|
<p><strong>输出</strong></p>
|
|
<pre class="line-numbers language-javascript" data-language="javascript"><code class="language-javascript"><span class="token punctuation">[</span>
|
|
<span class="token punctuation">[</span> <span class="token string">'user'</span><span class="token punctuation">,</span> <span class="token string">'title'</span> <span class="token punctuation">]</span><span class="token punctuation">,</span>
|
|
<span class="token punctuation">[</span> <span class="token string">'user'</span><span class="token punctuation">,</span> <span class="token string">'first_name'</span> <span class="token punctuation">]</span><span class="token punctuation">,</span>
|
|
<span class="token punctuation">[</span> <span class="token string">'user'</span><span class="token punctuation">,</span> <span class="token string">'name'</span> <span class="token punctuation">]</span><span class="token punctuation">,</span>
|
|
<span class="token punctuation">[</span> <span class="token string">'user'</span><span class="token punctuation">,</span> <span class="token string">'last_name'</span> <span class="token punctuation">]</span><span class="token punctuation">,</span>
|
|
<span class="token punctuation">[</span> <span class="token string">'user'</span><span class="token punctuation">,</span> <span class="token string">'address'</span> <span class="token punctuation">]</span><span class="token punctuation">,</span>
|
|
<span class="token punctuation">[</span> <span class="token string">'user'</span><span class="token punctuation">,</span> <span class="token string">'address'</span><span class="token punctuation">,</span> <span class="token string">'line1'</span> <span class="token punctuation">]</span><span class="token punctuation">,</span>
|
|
<span class="token punctuation">[</span> <span class="token string">'user'</span><span class="token punctuation">,</span> <span class="token string">'email_addresses'</span><span class="token punctuation">,</span> <span class="token number">0</span> <span class="token punctuation">]</span><span class="token punctuation">,</span>
|
|
<span class="token punctuation">[</span> <span class="token string">'user'</span><span class="token punctuation">,</span> <span class="token string">'email_addresses'</span> <span class="token punctuation">]</span><span class="token punctuation">,</span>
|
|
<span class="token punctuation">[</span> <span class="token string">'title'</span> <span class="token punctuation">]</span><span class="token punctuation">,</span>
|
|
<span class="token punctuation">[</span> <span class="token string">'email'</span> <span class="token punctuation">]</span><span class="token punctuation">,</span>
|
|
<span class="token punctuation">[</span> <span class="token string">'a'</span><span class="token punctuation">,</span> <span class="token punctuation">[</span> <span class="token string">'b'</span><span class="token punctuation">,</span> <span class="token string">'c'</span> <span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token string">'d'</span> <span class="token punctuation">]</span><span class="token punctuation">,</span>
|
|
<span class="token punctuation">[</span> <span class="token string">'b'</span><span class="token punctuation">,</span> <span class="token string">'c'</span> <span class="token punctuation">]</span>
|
|
<span class="token punctuation">]</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>
|
|
|
|
<h3 id="全局变量" class="article-heading"><a href="#全局变量" class="headerlink" title="全局变量"></a>全局变量<a class="article-anchor" href="#全局变量" aria-hidden="true"></a></h3><p>注意在上述示例中,<code>title</code> 和 <code>email</code> 被包含在结果中。通常你可能希望排除 <code>{% assign %}</code> 标签中定义的变量名,以及由 <code>{% for %}</code> 标签引入的临时变量。</p>
|
|
<p>为了获取 <em>全局</em> 变量(即由应用开发者提供,而不是模板作者定义的变量)的名称,可以使用 <code>globalVariables</code>、<code>globalFullVariables</code> 或 <code>globalVariableSegments</code> 方法(及其同步版本)。</p>
|
|
<pre class="line-numbers language-javascript" data-language="javascript"><code class="language-javascript"><span class="token comment">// 上例继续</span>
|
|
engine<span class="token punctuation">.</span><span class="token function">globalVariableSegments</span><span class="token punctuation">(</span>template<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">then</span><span class="token punctuation">(</span>console<span class="token punctuation">.</span>log<span class="token punctuation">)</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span></span></code></pre>
|
|
|
|
<p><strong>输出</strong></p>
|
|
<pre class="line-numbers language-javascript" data-language="javascript"><code class="language-javascript"><span class="token punctuation">[</span>
|
|
<span class="token punctuation">[</span> <span class="token string">'user'</span><span class="token punctuation">,</span> <span class="token string">'title'</span> <span class="token punctuation">]</span><span class="token punctuation">,</span>
|
|
<span class="token punctuation">[</span> <span class="token string">'user'</span><span class="token punctuation">,</span> <span class="token string">'first_name'</span> <span class="token punctuation">]</span><span class="token punctuation">,</span>
|
|
<span class="token punctuation">[</span> <span class="token string">'user'</span><span class="token punctuation">,</span> <span class="token string">'name'</span> <span class="token punctuation">]</span><span class="token punctuation">,</span>
|
|
<span class="token punctuation">[</span> <span class="token string">'user'</span><span class="token punctuation">,</span> <span class="token string">'last_name'</span> <span class="token punctuation">]</span><span class="token punctuation">,</span>
|
|
<span class="token punctuation">[</span> <span class="token string">'user'</span><span class="token punctuation">,</span> <span class="token string">'address'</span> <span class="token punctuation">]</span><span class="token punctuation">,</span>
|
|
<span class="token punctuation">[</span> <span class="token string">'user'</span><span class="token punctuation">,</span> <span class="token string">'address'</span><span class="token punctuation">,</span> <span class="token string">'line1'</span> <span class="token punctuation">]</span><span class="token punctuation">,</span>
|
|
<span class="token punctuation">[</span> <span class="token string">'user'</span><span class="token punctuation">,</span> <span class="token string">'email_addresses'</span><span class="token punctuation">,</span> <span class="token number">0</span> <span class="token punctuation">]</span><span class="token punctuation">,</span>
|
|
<span class="token punctuation">[</span> <span class="token string">'user'</span><span class="token punctuation">,</span> <span class="token string">'email_addresses'</span> <span class="token punctuation">]</span><span class="token punctuation">,</span>
|
|
<span class="token punctuation">[</span> <span class="token string">'a'</span><span class="token punctuation">,</span> <span class="token punctuation">[</span> <span class="token string">'b'</span><span class="token punctuation">,</span> <span class="token string">'c'</span> <span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token string">'d'</span> <span class="token punctuation">]</span><span class="token punctuation">,</span>
|
|
<span class="token punctuation">[</span> <span class="token string">'b'</span><span class="token punctuation">,</span> <span class="token string">'c'</span> <span class="token punctuation">]</span>
|
|
<span class="token punctuation">]</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>
|
|
|
|
<h3 id="部分模板" class="article-heading"><a href="#部分模板" class="headerlink" title="部分模板"></a>部分模板<a class="article-anchor" href="#部分模板" aria-hidden="true"></a></h3><p>默认情况下,LiquidJS 还会尝试加载和分析任何被包含和渲染的模板。</p>
|
|
<pre class="line-numbers language-javascript" data-language="javascript"><code class="language-javascript"><span class="token keyword">import</span> <span class="token punctuation">{</span> Liquid <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'liquidjs'</span>
|
|
|
|
<span class="token keyword">const</span> footer <span class="token operator">=</span> <span class="token template-string"><span class="token template-punctuation string">`</span><span class="token string">
|
|
<footer>
|
|
<p>&copy; {{ "now" | date: "%Y" }} {{ site_name }}</p>
|
|
<p>{{ site_description }}</p>
|
|
</footer></span><span class="token template-punctuation string">`</span></span>
|
|
|
|
<span class="token keyword">const</span> engine <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Liquid</span><span class="token punctuation">(</span><span class="token punctuation">{</span> <span class="token literal-property property">templates</span><span class="token operator">:</span> <span class="token punctuation">{</span> footer <span class="token punctuation">}</span> <span class="token punctuation">}</span><span class="token punctuation">)</span>
|
|
|
|
<span class="token keyword">const</span> template <span class="token operator">=</span> engine<span class="token punctuation">.</span><span class="token function">parse</span><span class="token punctuation">(</span><span class="token template-string"><span class="token template-punctuation string">`</span><span class="token string">
|
|
<body>
|
|
<h1>Hi, {{ you | default: 'World' }}!</h1>
|
|
{% assign some = 'thing' %}
|
|
{% include 'footer' %}
|
|
</body>
|
|
</span><span class="token template-punctuation string">`</span></span><span class="token punctuation">)</span>
|
|
|
|
engine<span class="token punctuation">.</span><span class="token function">globalVariables</span><span class="token punctuation">(</span>template<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">then</span><span class="token punctuation">(</span>console<span class="token punctuation">.</span>log<span class="token punctuation">)</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>
|
|
|
|
<p><strong>输出</strong></p>
|
|
<pre class="line-numbers language-javascript" data-language="javascript"><code class="language-javascript"><span class="token punctuation">[</span> <span class="token string">'you'</span><span class="token punctuation">,</span> <span class="token string">'site_name'</span><span class="token punctuation">,</span> <span class="token string">'site_description'</span> <span class="token punctuation">]</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre>
|
|
|
|
<p>可以通过将 <code>partials</code> 选项设置为 <code>false</code> 来禁用部分模板的分析。</p>
|
|
<pre class="line-numbers language-javascript" data-language="javascript"><code class="language-javascript"><span class="token comment">// 上例继续</span>
|
|
engine<span class="token punctuation">.</span><span class="token function">globalVariables</span><span class="token punctuation">(</span>template<span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token literal-property property">partials</span><span class="token operator">:</span> <span class="token boolean">false</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">then</span><span class="token punctuation">(</span>console<span class="token punctuation">.</span>log<span class="token punctuation">)</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span></span></code></pre>
|
|
|
|
<p><strong>输出</strong></p>
|
|
<pre class="line-numbers language-javascript" data-language="javascript"><code class="language-javascript"><span class="token punctuation">[</span> <span class="token string">'you'</span> <span class="token punctuation">]</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre>
|
|
|
|
<p>如果 <code>{% include %}</code> 标签使用了动态模板名称(无法在渲染模板之前确定的模板名称),即使 <code>partials</code> 设置为 <code>true</code>,也会被忽略。</p>
|
|
<h3 id="高级用法" class="article-heading"><a href="#高级用法" class="headerlink" title="高级用法"></a>高级用法<a class="article-anchor" href="#高级用法" aria-hidden="true"></a></h3><p>上述示例使用的是 <code>Liquid</code> 类的便捷方法,适用于最常见的使用场景。<br>如果需要更详细的信息,可以直接处理 <a href="/api/interfaces/StaticAnalysis.html">分析结果</a>,其中每个变量的每次出现都会记录行、列和文件名等信息。</p>
|
|
<p>此处是对 <a href="#部分模板">部分模板</a> 中模板进行 <code>Liquid.analyze()</code> 调用后返回的对象示例。</p>
|
|
<pre class="line-numbers language-javascript" data-language="javascript"><code class="language-javascript"><span class="token punctuation">{</span>
|
|
<span class="token literal-property property">variables</span><span class="token operator">:</span> <span class="token punctuation">{</span>
|
|
<span class="token literal-property property">you</span><span class="token operator">:</span> <span class="token punctuation">[</span>
|
|
<span class="token punctuation">[</span><span class="token function">String</span> <span class="token punctuation">(</span>Variable<span class="token punctuation">)</span><span class="token operator">:</span> <span class="token string">'you'</span><span class="token punctuation">]</span> <span class="token punctuation">{</span>
|
|
<span class="token literal-property property">segments</span><span class="token operator">:</span> <span class="token punctuation">[</span> <span class="token string">'you'</span> <span class="token punctuation">]</span><span class="token punctuation">,</span>
|
|
<span class="token literal-property property">location</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">row</span><span class="token operator">:</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token literal-property property">col</span><span class="token operator">:</span> <span class="token number">14</span><span class="token punctuation">,</span> <span class="token literal-property property">file</span><span class="token operator">:</span> <span class="token keyword">undefined</span> <span class="token punctuation">}</span>
|
|
<span class="token punctuation">}</span>
|
|
<span class="token punctuation">]</span><span class="token punctuation">,</span>
|
|
<span class="token literal-property property">site_name</span><span class="token operator">:</span> <span class="token punctuation">[</span>
|
|
<span class="token punctuation">[</span><span class="token function">String</span> <span class="token punctuation">(</span>Variable<span class="token punctuation">)</span><span class="token operator">:</span> <span class="token string">'site_name'</span><span class="token punctuation">]</span> <span class="token punctuation">{</span>
|
|
<span class="token literal-property property">segments</span><span class="token operator">:</span> <span class="token punctuation">[</span> <span class="token string">'site_name'</span> <span class="token punctuation">]</span><span class="token punctuation">,</span>
|
|
<span class="token literal-property property">location</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">row</span><span class="token operator">:</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token literal-property property">col</span><span class="token operator">:</span> <span class="token number">41</span><span class="token punctuation">,</span> <span class="token literal-property property">file</span><span class="token operator">:</span> <span class="token string">'footer'</span> <span class="token punctuation">}</span>
|
|
<span class="token punctuation">}</span>
|
|
<span class="token punctuation">]</span><span class="token punctuation">,</span>
|
|
<span class="token literal-property property">site_description</span><span class="token operator">:</span> <span class="token punctuation">[</span>
|
|
<span class="token punctuation">[</span><span class="token function">String</span> <span class="token punctuation">(</span>Variable<span class="token punctuation">)</span><span class="token operator">:</span> <span class="token string">'site_description'</span><span class="token punctuation">]</span> <span class="token punctuation">{</span>
|
|
<span class="token literal-property property">segments</span><span class="token operator">:</span> <span class="token punctuation">[</span> <span class="token string">'site_description'</span> <span class="token punctuation">]</span><span class="token punctuation">,</span>
|
|
<span class="token literal-property property">location</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">row</span><span class="token operator">:</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token literal-property property">col</span><span class="token operator">:</span> <span class="token number">9</span><span class="token punctuation">,</span> <span class="token literal-property property">file</span><span class="token operator">:</span> <span class="token string">'footer'</span> <span class="token punctuation">}</span>
|
|
<span class="token punctuation">}</span>
|
|
<span class="token punctuation">]</span>
|
|
<span class="token punctuation">}</span><span class="token punctuation">,</span>
|
|
<span class="token literal-property property">globals</span><span class="token operator">:</span> <span class="token punctuation">{</span>
|
|
<span class="token literal-property property">you</span><span class="token operator">:</span> <span class="token punctuation">[</span>
|
|
<span class="token punctuation">[</span><span class="token function">String</span> <span class="token punctuation">(</span>Variable<span class="token punctuation">)</span><span class="token operator">:</span> <span class="token string">'you'</span><span class="token punctuation">]</span> <span class="token punctuation">{</span>
|
|
<span class="token literal-property property">segments</span><span class="token operator">:</span> <span class="token punctuation">[</span> <span class="token string">'you'</span> <span class="token punctuation">]</span><span class="token punctuation">,</span>
|
|
<span class="token literal-property property">location</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">row</span><span class="token operator">:</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token literal-property property">col</span><span class="token operator">:</span> <span class="token number">14</span><span class="token punctuation">,</span> <span class="token literal-property property">file</span><span class="token operator">:</span> <span class="token keyword">undefined</span> <span class="token punctuation">}</span>
|
|
<span class="token punctuation">}</span>
|
|
<span class="token punctuation">]</span><span class="token punctuation">,</span>
|
|
<span class="token literal-property property">site_name</span><span class="token operator">:</span> <span class="token punctuation">[</span>
|
|
<span class="token punctuation">[</span><span class="token function">String</span> <span class="token punctuation">(</span>Variable<span class="token punctuation">)</span><span class="token operator">:</span> <span class="token string">'site_name'</span><span class="token punctuation">]</span> <span class="token punctuation">{</span>
|
|
<span class="token literal-property property">segments</span><span class="token operator">:</span> <span class="token punctuation">[</span> <span class="token string">'site_name'</span> <span class="token punctuation">]</span><span class="token punctuation">,</span>
|
|
<span class="token literal-property property">location</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">row</span><span class="token operator">:</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token literal-property property">col</span><span class="token operator">:</span> <span class="token number">41</span><span class="token punctuation">,</span> <span class="token literal-property property">file</span><span class="token operator">:</span> <span class="token string">'footer'</span> <span class="token punctuation">}</span>
|
|
<span class="token punctuation">}</span>
|
|
<span class="token punctuation">]</span><span class="token punctuation">,</span>
|
|
<span class="token literal-property property">site_description</span><span class="token operator">:</span> <span class="token punctuation">[</span>
|
|
<span class="token punctuation">[</span><span class="token function">String</span> <span class="token punctuation">(</span>Variable<span class="token punctuation">)</span><span class="token operator">:</span> <span class="token string">'site_description'</span><span class="token punctuation">]</span> <span class="token punctuation">{</span>
|
|
<span class="token literal-property property">segments</span><span class="token operator">:</span> <span class="token punctuation">[</span> <span class="token string">'site_description'</span> <span class="token punctuation">]</span><span class="token punctuation">,</span>
|
|
<span class="token literal-property property">location</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">row</span><span class="token operator">:</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token literal-property property">col</span><span class="token operator">:</span> <span class="token number">9</span><span class="token punctuation">,</span> <span class="token literal-property property">file</span><span class="token operator">:</span> <span class="token string">'footer'</span> <span class="token punctuation">}</span>
|
|
<span class="token punctuation">}</span>
|
|
<span class="token punctuation">]</span>
|
|
<span class="token punctuation">}</span><span class="token punctuation">,</span>
|
|
<span class="token literal-property property">locals</span><span class="token operator">:</span> <span class="token punctuation">{</span>
|
|
<span class="token literal-property property">some</span><span class="token operator">:</span> <span class="token punctuation">[</span>
|
|
<span class="token punctuation">[</span><span class="token function">String</span> <span class="token punctuation">(</span>Variable<span class="token punctuation">)</span><span class="token operator">:</span> <span class="token string">'some'</span><span class="token punctuation">]</span> <span class="token punctuation">{</span>
|
|
<span class="token literal-property property">segments</span><span class="token operator">:</span> <span class="token punctuation">[</span> <span class="token string">'some'</span> <span class="token punctuation">]</span><span class="token punctuation">,</span>
|
|
<span class="token literal-property property">location</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">row</span><span class="token operator">:</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token literal-property property">col</span><span class="token operator">:</span> <span class="token number">13</span><span class="token punctuation">,</span> <span class="token literal-property property">file</span><span class="token operator">:</span> <span class="token keyword">undefined</span> <span class="token punctuation">}</span>
|
|
<span class="token punctuation">}</span>
|
|
<span class="token punctuation">]</span>
|
|
<span class="token punctuation">}</span>
|
|
<span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>
|
|
|
|
<h3 id="自定义标签的分析" class="article-heading"><a href="#自定义标签的分析" class="headerlink" title="自定义标签的分析"></a>自定义标签的分析<a class="article-anchor" href="#自定义标签的分析" aria-hidden="true"></a></h3><p>为了在静态分析中包含自定义标签的结果,这些标签必须实现 <a href="/api/interfaces/Template.html">Template 接口</a> 中定义的一些附加方法。LiquidJS 会使用这些方法返回的信息来遍历模板并报告变量使用情况。</p>
|
|
<p>并非所有方法都是必须的,这取决于标签的类型。如果标签是一个块标签,具有起始标签、结束标签以及内容,那么它需要实现 <a href="/api/interfaces/Template.html#children"><code>children()</code></a> 方法。<code>children()</code> 需要返回一个生成器,这是为了像 <code>render()</code> 一样既可以同步也可以异步调用。该方法应返回当前标签的子节点,例如 HTML 内容、输出语句和标签。</p>
|
|
<p><a href="/api/interfaces/Template.html#blockScope"><code>blockScope()</code></a> 方法用于告知 LiquidJS 在标签块的持续时间内哪些名称会处于作用域中。这些名称可能依赖于标签的参数,也可能是固定的,例如 <code>{% for %}</code> 标签生成的 <code>forloop</code>。</p>
|
|
<p>无论标签是行内标签还是块标签,如果它接受参数,则应实现 <a href="/api/interfaces/Template.html#arguments"><code>arguments()</code></a> 方法,该方法负责将标签的参数作为 <a href="/api/classes/Value.html"><code>Value</code></a> 实例或类型为 <a href="/api/types/ValueToken.html"><code>ValueToken</code></a> 的标记序列返回。</p>
|
|
<p>以下示例展示了块标签如何实现这些方法。有关更多示例,请参见 LiquidJS 的<a target="_blank" rel="noopener external nofollow noreferrer" href="https://github.com/harttle/liquidjs/tree/master/src/tags">内置标签</a>。</p>
|
|
<pre class="line-numbers language-javascript" data-language="javascript"><code class="language-javascript"><span class="token keyword">import</span> <span class="token punctuation">{</span> Liquid<span class="token punctuation">,</span> Tag<span class="token punctuation">,</span> Hash <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'liquidjs'</span>
|
|
|
|
<span class="token keyword">class</span> <span class="token class-name">ExampleTag</span> <span class="token keyword">extends</span> <span class="token class-name">Tag</span> <span class="token punctuation">{</span>
|
|
args
|
|
templates
|
|
|
|
<span class="token function">constructor</span> <span class="token punctuation">(</span><span class="token parameter">token<span class="token punctuation">,</span> remainTokens<span class="token punctuation">,</span> liquid<span class="token punctuation">,</span> parser</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
|
<span class="token keyword">super</span><span class="token punctuation">(</span>token<span class="token punctuation">,</span> remainTokens<span class="token punctuation">,</span> liquid<span class="token punctuation">)</span>
|
|
<span class="token keyword">this</span><span class="token punctuation">.</span>args <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Hash</span><span class="token punctuation">(</span>token<span class="token punctuation">.</span>tokenizer<span class="token punctuation">)</span>
|
|
<span class="token keyword">this</span><span class="token punctuation">.</span>templates <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
|
|
|
|
<span class="token keyword">const</span> stream <span class="token operator">=</span> parser<span class="token punctuation">.</span><span class="token function">parseStream</span><span class="token punctuation">(</span>remainTokens<span class="token punctuation">)</span>
|
|
<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'tag:endexample'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span> stream<span class="token punctuation">.</span><span class="token function">stop</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">}</span><span class="token punctuation">)</span>
|
|
<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'template'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token parameter">tpl</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token keyword">this</span><span class="token punctuation">.</span>templates<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span>tpl<span class="token punctuation">)</span><span class="token punctuation">)</span>
|
|
<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'end'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span> <span class="token keyword">throw</span> <span class="token keyword">new</span> <span class="token class-name">Error</span><span class="token punctuation">(</span><span class="token template-string"><span class="token template-punctuation string">`</span><span class="token string">tag </span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>token<span class="token punctuation">.</span><span class="token function">getText</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token interpolation-punctuation punctuation">}</span></span><span class="token string"> not closed</span><span class="token template-punctuation string">`</span></span><span class="token punctuation">)</span> <span class="token punctuation">}</span><span class="token punctuation">)</span>
|
|
|
|
stream<span class="token punctuation">.</span><span class="token function">start</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
|
<span class="token punctuation">}</span>
|
|
|
|
<span class="token operator">*</span> <span class="token function">render</span> <span class="token punctuation">(</span><span class="token parameter">ctx<span class="token punctuation">,</span> emitter</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
|
<span class="token keyword">const</span> scope <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token keyword">yield</span> <span class="token keyword">this</span><span class="token punctuation">.</span>args<span class="token punctuation">.</span><span class="token function">render</span><span class="token punctuation">(</span>ctx<span class="token punctuation">)</span><span class="token punctuation">)</span>
|
|
ctx<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span>scope<span class="token punctuation">)</span>
|
|
<span class="token keyword">yield</span> <span class="token keyword">this</span><span class="token punctuation">.</span>liquid<span class="token punctuation">.</span>renderer<span class="token punctuation">.</span><span class="token function">renderTemplates</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">.</span>templates<span class="token punctuation">,</span> ctx<span class="token punctuation">,</span> emitter<span class="token punctuation">)</span>
|
|
ctx<span class="token punctuation">.</span><span class="token function">pop</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
|
<span class="token punctuation">}</span>
|
|
|
|
<span class="token operator">*</span> <span class="token function">children</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
|
<span class="token keyword">return</span> <span class="token keyword">this</span><span class="token punctuation">.</span>templates
|
|
<span class="token punctuation">}</span>
|
|
|
|
<span class="token operator">*</span> <span class="token function">arguments</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
|
<span class="token keyword">yield</span> <span class="token operator">*</span> Object<span class="token punctuation">.</span><span class="token function">values</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">.</span>args<span class="token punctuation">.</span>hash<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">filter</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token parameter">el</span><span class="token punctuation">)</span> <span class="token operator">=></span> el <span class="token operator">!==</span> <span class="token keyword">undefined</span><span class="token punctuation">)</span>
|
|
<span class="token punctuation">}</span>
|
|
|
|
<span class="token function">blockScope</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
|
<span class="token keyword">return</span> Object<span class="token punctuation">.</span><span class="token function">keys</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">.</span>args<span class="token punctuation">.</span>hash<span class="token punctuation">)</span>
|
|
<span class="token punctuation">}</span>
|
|
<span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>
|
|
|
|
|
|
</div>
|
|
<footer class="article-footer">
|
|
<time class="article-footer-updated" datetime="2026-04-07T13:01:39.015Z" itemprop="dateModified">上次更新:2026-04-07</time>
|
|
<a href="dos.html" class="article-footer-prev" title="DoS"><i class="icon-chevron-left"></i><span>上一页</span></a><a href="migrate-to-9.html" class="article-footer-next" title="迁移到 LiquidJS 9"><span>下一页</span><i class="icon-chevron-right"></i></a>
|
|
</footer>
|
|
</div>
|
|
</div>
|
|
<aside id="article-toc" role="navigation">
|
|
<div id="article-toc-inner">
|
|
<div id="article-toc-inner-list">
|
|
<strong class="sidebar-title">目录</strong>
|
|
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%8F%98%E9%87%8F"><span class="toc-text">变量</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#%E5%85%A8%E5%B1%80%E5%8F%98%E9%87%8F"><span class="toc-text">全局变量</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E9%83%A8%E5%88%86%E6%A8%A1%E6%9D%BF"><span class="toc-text">部分模板</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E9%AB%98%E7%BA%A7%E7%94%A8%E6%B3%95"><span class="toc-text">高级用法</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E8%87%AA%E5%AE%9A%E4%B9%89%E6%A0%87%E7%AD%BE%E7%9A%84%E5%88%86%E6%9E%90"><span class="toc-text">自定义标签的分析</span></a></li></ol></li></ol>
|
|
</div>
|
|
<a href="#" id="article-toc-top">回到顶部</a>
|
|
</div>
|
|
</aside>
|
|
</div>
|
|
</article>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<footer id="footer" class="wrapper">
|
|
<div class="inner">
|
|
<div id="footer-copyright">
|
|
© 2026 <a href="https://github.com/harttle/liquidjs/graphs/contributors" rel="external nofollow noreferrer" target="_blank">Harttle</a><br>
|
|
本文档通过 <a href="http://creativecommons.org/licenses/by/4.0/" rel="external nofollow noreferrer" target="_blank">CC BY 4.0</a> 授权。
|
|
</div>
|
|
<div id="footer-links">
|
|
<a href="https://twitter.com/harttleharttle" rel="external nofollow noreferrer" class="footer-link" target="_blank"><i class="icon-twitter"></i></a>
|
|
<a href="https://opencollective.com/liquidjs" rel="external nofollow noreferrer" class="footer-link" target="_blank"><i class="icon-opencollective"></i></a>
|
|
<a href="https://github.com/harttle/liquidjs" rel="external nofollow noreferrer" class="footer-link" target="_blank"><i class="icon-github"></i></a>
|
|
</div>
|
|
</div>
|
|
</footer>
|
|
|
|
</div>
|
|
<div id="mobile-nav-dimmer"></div>
|
|
<nav id="mobile-nav">
|
|
<div id="mobile-nav-inner">
|
|
<ul id="mobile-nav-list">
|
|
<a href="intro-to-liquid.html" class="mobile-nav-link">教程</a><a href="../tags/overview.html" class="mobile-nav-link">标签</a><a href="../filters/overview.html" class="mobile-nav-link">过滤器</a><a href="../playground.html" class="mobile-nav-link">演示</a><a href="../../api/classes/Liquid.html" class="mobile-nav-link">API</a>
|
|
</ul>
|
|
|
|
<div class="mobile-sidebar-list">
|
|
<strong class="mobile-nav-title">开始使用</strong><a href="intro-to-liquid.html" class="mobile-nav-link">Liquid 简介</a><a href="setup.html" class="mobile-nav-link">安装</a><a href="options.html" class="mobile-nav-link">选项</a><a href="render-file.html" class="mobile-nav-link">文件渲染</a><a href="partials-and-layouts.html" class="mobile-nav-link">引用/继承</a><a href="use-in-expressjs.html" class="mobile-nav-link">Express.js 中使用</a><strong class="mobile-nav-title">高级主题</strong><a href="caching.html" class="mobile-nav-link">缓存</a><a href="escaping.html" class="mobile-nav-link">转义</a><a href="register-filters-tags.html" class="mobile-nav-link">注册标签/过滤器</a><a href="access-scope-in-filters.html" class="mobile-nav-link">过滤器里访问上下文</a><a href="parse-parameters.html" class="mobile-nav-link">参数解析</a><a href="render-tag-content.html" class="mobile-nav-link">渲染标签内容</a><a href="drops.html" class="mobile-nav-link">Liquid Drop</a><a href="sync-and-async.html" class="mobile-nav-link">同步和异步</a><a href="whitespace-control.html" class="mobile-nav-link">换行和缩进</a><a href="plugins.html" class="mobile-nav-link">插件</a><a href="operators.html" class="mobile-nav-link">运算符</a><a href="truthy-and-falsy.html" class="mobile-nav-link">真和假</a><a href="dos.html" class="mobile-nav-link">DoS</a><a href="static-analysis.html" class="mobile-nav-link current">静态分析</a><strong class="mobile-nav-title">其他</strong><a href="migrate-to-9.html" class="mobile-nav-link">迁移到 LiquidJS 9</a><a href="changelog.html" class="mobile-nav-link">更新日志</a><a href="differences.html" class="mobile-nav-link">与 Shopify/liquid 的不同</a><a href="contribution-guidelines.html" class="mobile-nav-link">贡献指南</a>
|
|
</div>
|
|
|
|
</div>
|
|
<div id="mobile-button-list">
|
|
<a href="https://github.com/harttle/liquidjs" class="mobile-nav-link" rel="external" target="_blank"><i class="icon-github"></i></a>
|
|
<a href="https://opencollective.com/liquidjs" class="mobile-nav-link" rel="external" target="_blank"><i class="icon-opencollective"></i></a>
|
|
<div id="mobile-lang-select-wrap" class="mobile-nav-link">
|
|
<label for="mobile-lang-select"><i class="icon-network"></i></label>
|
|
<select id="mobile-lang-select" data-canonical="tutorials/static-analysis.html">
|
|
|
|
<option value="en">English</option>
|
|
|
|
<option value="zh-cn" selected>简体中文</option>
|
|
|
|
</select>
|
|
</div>
|
|
</div>
|
|
</nav>
|
|
|
|
|
|
|
|
<script src="../../js/main.js"></script>
|
|
|
|
|
|
<script src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
|
|
<script>
|
|
document.getElementById('search-input-wrap').classList.add('on');
|
|
docsearch({
|
|
appId: 'QJ35YOZTU4',
|
|
apiKey: '8c6cbb824b4c5023f0bb2ef29e228bef',
|
|
indexName: 'liquidjs',
|
|
inputSelector: '#search-input',
|
|
debug: false
|
|
});
|
|
</script>
|
|
</body>
|
|
</html> |