摘要
静态网站生成器(SSG)主题迁移是一项需要同时掌握源平台模板语法、目标平台模板引擎差异、数据模型映射和CSS设计规范的复杂任务。其中,Hexo的Pug模板引擎与Gridea Pro的Pongo2(Jinja2的Go实现)之间存在根本性的语法范式差异,使得跨平台迁移成为一项手动语法翻译的繁重工作。本文提出Hexo-to-Gridea-Migration,一个面向AI编程助手的结构化迁移方法论,将该迁移流程分解为七个有序阶段:逆向分析、变量映射推导、模板重写、CSS移植、自动化验证、真机验证和映射积累。该方法论建立在Theme-Builder Skill框架的验证基础设施之上,并在此基础上贡献了四项迁移特有的创新:(1)通过"先理解后翻译"的逆向分析策略,确保迁移不丢失源主题的设计意图;(2)基于交叉比对的动态变量映射推导机制,不依赖硬编码映射表,通过源主题变量清单与目标平台变量目录的逐项匹配自动推导对应关系;(3)Pug Mixin到Pongo2 Include的范式转换策略,解决"函数式组件"到"声明式片段"的语义鸿沟;(4)通过映射积累实现迁移知识的复利效应,将每次迁移的变量对应关系持久化为可复用的结构化数据。该方法论原生支持 Pug、Swig、Nunjucks、EJS 四种 Hexo 源模板引擎的迁移,本文以 Pug 为例展开阐述。
引言
随着SSG生态的不断发展,用户在Hexo、Hugo、Jekyll、Gridea等平台之间迁移的需求日益增长。Theme-Builder Skill框架为Gridea Pro主题开发提供了完整的脚手架、校验和测试工具链,但该框架聚焦于从零创建主题,而非从现有主题迁移。跨平台迁移面临独特的挑战:源主题的模板语法(如Pug的缩进式语法)与目标平台的模板引擎(如Pongo2)存在根本性的范式差异,不能通过简单的语法替换完成。
Gridea Pro的渲染后端通过Pongo2(Go实现)提供Jinja2支持。Pongo2与标准Python Jinja2存在约14个已知不兼容项,这些差异在AI辅助开发场景中尤为关键——AI模型通常默认生成标准Python Jinja2语法,这会在Pongo2环境下产生难以调试的运行时错误。Theme-Builder Skill已文档化了这些不兼容项并提供了语法校验工具,但未覆盖从Pug等外部模板语言迁移的具体策略。
Hexo生态中,Pug(原Jade)是一种广泛使用的模板语言,以其简洁的缩进语法和强大的mixin机制著称。将Hexo Pug主题迁移到Gridea Pro Pongo2需要同时处理三重转换:Pug缩进语法到HTML标签语法、Hexo变量系统到Gridea变量系统、以及Pug mixin到Pongo2 include组件的范式转换。这些转换中,mixin到include的映射是最具挑战性的——Pug的mixin是带参数的函数式组件,而Pongo2不支持macro,需要以完全不同的范式重新组织代码。
本文提出Hexo-to-Gridea-Migration,一个面向AI编程助手的结构化迁移方法论。该方法论将完整迁移流程分解为七个有序阶段,每个阶段具有明确的输入、输出和验证标准。核心设计原则是"先理解后翻译"——不是机械地转换Pug语法,而是先逆向分析源主题的渲染意图和设计语言,再用Pongo2重新生成语义等价的HTML结构。
虽然本文以 Pug 为例展开阐述,但该方法论的 Prompt 文档原生支持通过文件扩展名自动检测四种 Hexo 源模板引擎:Pug(.pug)、Swig(.swig)、Nunjucks(.njk)和 EJS(.ejs)。不同引擎的语法转换对照表及组件转换策略在 Prompt 文档中有完整覆盖,确保了方法论的跨引擎通用性。
本文的核心贡献如下:
-
七阶段结构化迁移流程,覆盖从逆向分析到映射积累的完整生命周期,每阶段具有独立的验证标准。
-
基于交叉比对的动态变量映射推导机制,不依赖硬编码映射表,通过源主题变量清单与目标平台变量目录的逐项匹配自动推导对应关系。
-
多引擎组件范式转换策略,系统化解决不同源引擎(Pug Mixin、EJS 函数、Swig/Nunjucks Macro)到Pongo2 Include的语义鸿沟。
-
映射积累机制,通过将每次迁移的变量对应关系持久化,使后续迁移能够复用先验知识,实现迁移效率的复利增长。
相关工作
SSG主题迁移现状
现有SSG主题迁移工具主要依赖手动重写。Hugo社区提供了从Jekyll迁移的指南,但本质上仍是手动对照翻译。Hexo社区有少量从WordPress迁移的工具,但聚焦于内容迁移而非主题迁移。目前尚无系统化的Hexo Pug到Gridea Pro Pongo2的主题迁移方案。
Theme-Builder Skill框架
Theme-Builder Skill是一个面向AI编程助手的结构化技能包,为Gridea Pro主题开发提供端到端支持。该框架采用三层架构(知识层、工具层、模板层),提供了脚手架脚本、语法校验脚本和渲染测试脚本,并管理了Pongo2的全部14个不兼容项。本工作建立在Theme-Builder的验证基础设施之上,复用其validate_syntax.py和render_test.py作为自动化验证层的核心组件,在此基础上扩展了迁移特有的流程和工具。
AI辅助代码迁移
随着大语言模型(LLM)在代码生成领域的进步,AI辅助编程已从代码补全发展到完整的软件工程任务。在代码迁移领域,现有工作主要集中于同语言版本升级(如Python 2到3)或框架迁移(如AngularJS到React),这些场景的源和目标语法高度相似。跨模板引擎迁移(Pug → Pongo2)面临根本性的范式差异,需要更深层的语义理解而非语法翻译。结构化Prompt是将领域专业知识编码为可执行指令的有效方式——不同于检索增强生成(RAG)的被动检索模式,结构化Prompt将领域知识直接嵌入到AI助手的上下文窗口中,使其在任务执行过程中持续参考。本方法采用此策略,将迁移特有的领域知识编码为结构化迁移Prompt。
方法论:七阶段迁移流程
Hexo-Pug-to-Gridea-Migration将完整迁移流程分解为七个有序阶段。每个阶段具有明确的输入、输出和验证标准,阶段之间通过定义良好的接口衔接。
七阶段迁移流程:逆向分析 → 变量映射推导 → 模板重写 → CSS移植 → 自动化验证 → 真机验证 → 映射积累。阶段间顺序执行,每阶段完成后需用户确认方可进入下一阶段。
在执行阶段一之前,Prompt 文档定义了一个前置步骤——源引擎自动检测。AI 通过扫描源主题目录中的文件扩展名自动识别模板引擎:.pug 对应 Pug、.swig 对应 Swig、.njk 对应 Nunjucks、.ejs 对应 EJS。检测结果决定后续所有阶段使用的语法转换对照表和组件转换策略。本文后续展示以 Pug 引擎为例。
阶段一:逆向分析源主题
传统迁移方法通常直接对比源模板和目标模板的语法差异,逐行翻译。这种方法忽略了源主题的渲染意图——Pug模板最终生成的HTML结构才是迁移的真正目标。阶段一采用"先理解后翻译"的策略,包含四个子步骤:
**目录结构扫描。**遍历源Hexo Pug主题的完整目录结构,按布局、页面、局部、Mixin、脚本、样式、图片、配置等分类输出组件清单,并标注每个组件在Gridea主题中的对应目标文件。(注:不同引擎的组件复用模式叫法不同——Pug 称 Mixin、EJS 称 Function/Include、Swig/Nunjucks 称 Macro——阶段一分析时保留原始叫法,阶段三重写时统一转换为 Pongo2 的 include 模式。)
**页面-组件依赖图。**对每个页面模板,绘制其依赖的组件树,明确extends、include和block的层级关系。这确保模板重写时不会遗漏任何组件依赖。
**关键逻辑提取。**提取每个Pug模板中的条件分支、循环逻辑、变量使用清单和Mixin调用。变量使用清单是阶段二推导映射表的输入——列出每个模板中出现的所有Hexo变量(page.xxx、config.xxx、theme.xxx、site.xxx)和Helper函数调用(url_for()、date_xml()、truncate()等),标注出现位置和语义。
**设计语言提取。**从源主题的CSS/SCSS中提取色板、字体栈、间距系统、布局参数、断点、圆角、阴影和过渡等设计参数。这些参数不依赖AI猜测,而是直接从CSS源码中读取:root变量或SCSS变量。
阶段二:推导变量映射表
变量映射是跨平台迁移的核心挑战。阶段二的核心原则是不在Prompt中硬编码任何Hexo → Gridea变量映射,所有映射关系由AI动态推导。
推导过程包括四个步骤:(1)从阶段一的变量使用清单中获取源主题的所有变量引用;(2)从template-variables.md参考文档中获取Gridea侧的所有可用变量及字段名;(3)如果存在历史映射文件hexo-to-gridea-mappings.md,将其作为先验知识,但需与当前源主题的实际变量使用情况交叉验证;(4)逐项匹配:对每个Hexo变量,在Gridea变量目录中寻找语义等价的对应物。
推导输出包含五个维度:Hexo变量名、Gridea变量名、匹配依据(语义等价/功能等价/字段名不同)、是否需要特殊处理(如禁止|date filter),以及发现位置。
方法论文档中列出了10条硬性规则,覆盖了template-variables.md未涉及的跨系统陷阱。以下列出部分关键陷阱。这些陷阱是迁移场景特有的——它们来源于Hexo变量系统与Gridea变量系统之间的语义差异,而非模板引擎本身的语法问题。
跨系统变量映射中的关键陷阱(部分)
| 陷阱 | 错误做法 | 正确做法 |
|---|---|---|
post.date是RFC3339字符串 |
使用|date filter |
使用post.dateFormat |
| prev/next方向语义相反 | 直接使用原顺序 | 交换prev/next位置或标签文案 |
post.content需|safe |
直接输出 | post.content|safe |
| archives分组键大写 | 使用group.year |
使用group.Year |
| 友链字段名被重命名 | 使用link.name |
使用link.siteName |
theme_config数字比较 |
直接与数字比较 | 使用theme_config.count|default:8|to_int |
Hexo的config.subtitle等 |
直接访问config.xxx |
通过customConfig声明,模板中用theme_config.xxx |
site.categories无对应 |
期待全局分类列表 | 从posts手动聚合post.categories |
__('key')多语言 |
期待多语言机制 | 硬编码中文文案 |
partial('path', {data})传参 |
期待传参语法 | 改用{% set %}设置上下文 + {% include %} |
阶段三:脚手架生成与模板重写
阶段三首先使用scaffold_theme.py脚本生成完整的Gridea主题骨架,包含11个页面模板、4个局部模板、CSS变量体系和config.json配置。此步骤直接复用Theme-Builder Skill的脚手架工具,确保生成的主题结构与Gridea Pro规范完全一致。
然后按依赖关系顺序重写每个模板。核心原则:不是翻译Pug语法,而是理解Pug渲染出的HTML结构,用Pongo2重新生成同样的HTML。
模板重写涉及三重语法转换:Pug缩进语法到HTML标签语法、Hexo变量到Gridea变量的对照替换、以及Pug mixin到Pongo2 include的范式转换。对于非 Pug 源引擎,Prompt 文档同样提供了完整的语法转换对照:EJS → Pongo2(14行对照表)、Swig → Pongo2(11行对照表)和 Nunjucks → Pongo2(11行对照表),其中 Swig/Nunjucks 与 Pongo2 共享约90%的语法,迁移成本远低于 Pug 和 EJS。其中mixin转换是最具挑战性的环节——Pug的mixin是带参数的函数式组件,而Pongo2不支持macro。我们为此设计了三种转换策略:
-
**Include组件策略。**将mixin转为独立的include片段,通过
{% set %}变量传递上下文参数。例如,Pug的+tag(tagName)转为{% set tag = tagName %}{% include "partials/tag.html" %}。 -
**内联策略。**对于逻辑简单、调用次数少的mixin,直接内联展开,避免过度拆分导致的文件碎片化。
-
**条件分支替代。**Pug的
case语句在Pongo2中无直接对应物,转为{% if %}{% elif %}链。
完整的Pug到Pongo2语法转换对照表见附录“Pug → Pongo2语法转换对照表”。每完成一个模板,立即执行validate_syntax.py进行语法校验,确保零新增错误。
阶段四:CSS移植策略
CSS移植采用"重构而非复制"的策略:保留Gridea脚手架的CSS变量体系,将源主题的色板、字体栈和布局参数映射到CSS变量,然后逐组件对照迁移。具体策略包括:保留:root中的--color-*变量体系,将源主题的色值填入对应变量;将源主题的字体栈合并到--font-sans,确保中文字体在正确位置;将源主题的布局参数映射到--content-width、--header-height等变量。如果源主题有暗色模式,将暗色变量填入[data-theme="dark"]块。
CSS移植检查清单覆盖12个维度,涵盖颜色、字体、布局、响应式、Markdown样式、代码块、导航栏、分页器、标签云和页脚等核心样式区域。
阶段五:自动化验证与内容核查
自动化验证建立在Theme-Builder Skill的验证流水线之上,针对迁移场景增加了内容核查层。
**语法验证层。**直接复用Theme-Builder的validate_syntax.py,检查Pongo2模板中的常见错误,目标为零ERROR零WARN。迁移特有的额外检查包括Pug残留语法检测(如缩进式逻辑、mixin调用语法)和Hexo变量残留检测。
**渲染测试层。**直接复用Theme-Builder的render_test.py,使用模拟数据渲染所有模板,目标为所有页面渲染成功且无残留模板标签。
**内容核查层(迁移特有)。**渲染测试通过后,逐页抽查输出HTML。这是迁移特有的验证步骤,因为变量映射错误和mixin转换错误往往在语法层面不可见,仅体现在渲染结果中。检查项包括:文章列表非空、分页链接可点击、导航菜单完整、文章标题/日期/内容完整、标签列表显示、上下篇导航、封面图显示、OG meta标签正确、归档年份正确显示(特别注意group.Year大写)、友链信息完整、空状态场景(0篇文章、无封面图、无标签)不崩溃。方法论文档提供了详尽的内容级问题速查表,覆盖9种常见症状及其诊断路径。
迁移特有的内容级问题速查表
| 症状 | 可能原因 | 诊断路径 |
|---|---|---|
| 整页空白 | extends不是第一个标签 |
每个页面模板第一行 |
| if块完全不渲染 | not x == y静默失效 |
全局搜索改为!= |
| 归档年份不显示 | 用了group.year小写 |
改为group.Year |
| HTML标签显示为文本 | 缺少|safe |
所有post.content输出 |
| 日期显示为空 | 对字符串用了|date |
改为post.dateFormat |
| 循环体空 | 变量名写错 | 对照阶段二映射表 |
| 友链名称不显示 | 用了link.name |
改为link.siteName |
| 分页不显示 | 判断条件错误 | 改用pagination.hasPrev |
| 暗色模式切换无效 | CSS变量未在暗色块中定义 | 检查CSS暗色变量块 |
阶段六:真机验证
将主题目录复制到Gridea Pro的themes/目录,在Gridea Pro桌面应用中切换为新主题,执行渲染并检查output/目录中无fallback-banner(黄色降级视图表示渲染报错)。逐页抽查首页、文章页、归档页、标签页、友链页和404页,验证暗色模式和移动端(375px)响应式。
阶段七:映射积累
**7.0 前置预检。**在开始交叉比对之前,Prompt 文档定义了强制的前置校验步骤:对迁移后的 Gridea 主题依次执行(1)语法校验(validate_syntax.py,要求零 ERROR);(2)渲染测试(render_test.py,要求零 FAIL);(3)结构完整性检查(参照 quality-checklist.md 的 P0 级别,确认 0 篇文章、无封面图、特殊字符标题等边界情况不崩溃)。只有通过前置预检后,才允许进入交叉比对。若存在已知问题但用户确认可接受,则映射来源置信度降级。
**7.1 交叉比对与映射写入。**映射积累是让每次迁移产生复利效应的关键步骤。迁移完成后,将本次的变量映射关系提取并追加到hexo-to-gridea-mappings.md中,供后续迁移直接复用。该方法论支持两种使用模式:模式A(完整迁移流程中自动触发)和模式B(对已有迁移主题进行事后交叉比对)。
映射来源分为两个可信度等级:L1(高置信度,人工确认过的迁移主题)和L2(自动生成,AI自动推导的映射)。冲突解决遵循严格规则:L1永远覆盖L2;L1之间冲突以最新日期为准;L2写入时若发现已有L1记录则不覆盖。
前置知识加载
在执行任何迁移操作前,AI必须完成8项前置知识加载:Skill总入口文档、Gridea模板变量参考、Pongo2差异指南(由Theme-Builder Skill维护)、主题架构文档、配置规范、CSS模式、质量检查清单,以及历史映射文件(如存在)。这确保AI在执行迁移时具备完整的领域知识上下文。
讨论
方法论优势
Hexo-Pug-to-Gridea-Migration相较于传统手动迁移方法具有以下优势:
**结构化可复现。**七阶段流程将迁移过程从"凭经验的一次性手工操作"转变为"有明确步骤、输入输出和验证标准的工程流程"。每阶段的结果可审查、可复现。
**知识持久化。**通过阶段七的映射积累,每次迁移的经验被编码为结构化数据,后续迁移可直接复用。这与传统方法中"每次迁移从零开始"形成鲜明对比。
**适合AI辅助。**该方法论专为AI编程助手设计:明确的阶段划分使AI可以逐步执行并汇报进度;详细的验证标准使AI可以自动检测错误;结构化的前置知识加载确保AI在执行任务时具备完整的领域上下文。
**容错性强。**每阶段的独立验证确保错误在早期被发现。语法校验捕获模板语法错误,渲染测试捕获变量映射错误,内容核查捕获语义错误,真机验证捕获平台兼容性问题。
局限性
当前方法论存在若干局限性。首先,模板重写仍依赖AI对源Pug模板的语义理解,如果AI误解了某个Pug结构的渲染意图,可能导致HTML结构偏差。其次,CSS移植中的设计参数提取依赖于源主题CSS的规范和可读性——如果源主题使用大量魔法数字或非标准写法,提取准确度会下降。第三,渲染测试脚本使用Python Jinja2模拟Pongo2,无法检测运算符优先级差异(如not x == y在Pongo2中会被静默解释为(not x) == y)。第四,该方法论目前仅覆盖Hexo Pug到Gridea Pro Pongo2的迁移路径,对其他SSG平台组合(如Hugo到Gridea、Jekyll到Gridea)的支持需要扩展变量映射规则和陷阱清单。
可推广性
Hexo-to-Gridea-Migration的核心架构——结构化阶段分解、动态变量映射推导、显式陷阱管理、渐进式验证和知识积累——不限于当前的迁移场景。该框架可推广到任意需要跨模板引擎迁移的SSG平台组合,只需替换对应的变量目录、陷阱清单和语法转换对照表。该方法论原生支持的四种引擎(Pug、Swig、Nunjucks、EJS)之外,未来可扩展到 Hugo(Go Templates)、Jekyll 等平台,届时需要补充新的变量映射表和陷阱清单(如Go Templates的range-else结构在Jinja2中无对应物)。更广泛地,这种"将特定迁移路径的领域知识编码为结构化Prompt"的范式,可扩展到其他跨平台迁移场景,如API网关配置迁移、ORM模型到数据库DDL的转换等。
结论
本文提出了Hexo-to-Gridea-Migration,一个面向AI辅助编程的结构化跨平台主题迁移方法论。该方法论建立在Theme-Builder Skill框架的验证基础设施之上,将Hexo Pug主题到Gridea Pro Pongo2主题的迁移分解为七个有序阶段,通过逆向分析、动态变量映射、模板重写、CSS移植、自动化验证、真机验证和映射积累,实现了从"凭经验手工操作"到"结构化工程流程"的转变。
该方法论的核心创新在于:(1)“先理解后翻译"的逆向分析策略,确保迁移不丢失源主题的设计意图;(2)不依赖硬编码映射表的动态变量推导机制;(3)Pug Mixin到Pongo2 Include的范式转换策略;(4)通过映射积累实现迁移知识的复利增长。
未来工作包括:扩展对 Hugo(Go Templates)、Jekyll 等平台到 Gridea Pro 的迁移支持,开发面向Hugo、Jekyll等平台到Gridea Pro的迁移Prompt,引入AI驱动的自动CSS变量提取工具,以及构建面向社区的开源迁移知识库,积累更多迁移来源的映射数据。
伦理声明
本工作呈现的是一款软件工具及配套方法论,旨在辅助开发者完成跨平台主题迁移。本工作不涉及人类受试者实验、个人数据收集或任何可能造成伤害的应用场景。所有引用的第三方代码和文档均为开源项目,其许可证信息可在对应仓库中查询。
可复现性声明
Hexo-Pug-to-Gridea-Migration方法论以结构化Prompt文档的形式提供,其核心迁移Prompt文档(hexo-pug-to-gridea-migration-prompt.md)覆盖了七个阶段的所有操作指令、验证标准和参考文档。该方法论依赖Theme-Builder Skill框架提供的脚手架脚本(scaffold_theme.py)、语法校验脚本(validate_syntax.py)和渲染测试脚本(render_test.py),以上工具均已在Theme-Builder Skill仓库中开源。要复现迁移流程,需要:将迁移Prompt文档与AI编程助手配合使用,在具有相应Skill的AI环境中加载前置知识文档,并按照七阶段流程执行。模拟数据覆盖12篇具有多样化边界条件的文章。
参考文献
Gridea Pro. “Theme-Builder Skill:面向AI辅助编程的多引擎静态博客主题开发框架.” 2026.
Campos, U., et al. “Static Site Generators: A Systematic Literature Review.” Journal of Web Engineering, 2022.
Lewis, Patrick, et al. “Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks.” Advances in Neural Information Processing Systems, 2020.
Gridea Dev Team. “Gridea Pro——静态博客写作客户端.” https://github.com/getgridea/gridea, 2024.
flosch. “Pongo2——Go语言的Django风格模板引擎.” https://github.com/flosch/pongo2, 2024.
Hexo Dev Team. “Hexo——快速、简洁且高效的博客框架.” https://hexo.io, 2024.
Pug Dev Team. “Pug——健壮、优雅、功能丰富的Node.js模板引擎.” https://pugjs.org, 2024.
附录 A:Pongo2不兼容项速查
本工作所依赖的Pongo2与标准Jinja2之间的14个不兼容项(包括过滤器参数冒号语法、三元表达式不支持、not x == y静默失效等)已在Theme-Builder Skill框架的附录A中完整文档化。迁移过程中,AI通过前置知识加载机制引用该清单,确保生成的Pongo2代码符合运行时要求。此处不再重复列述,但补充以下在迁移场景中最高频触发的不兼容项:
-
**过滤器参数语法。**标准Jinja2使用括号传递过滤器参数(如
{{ content|truncate(100) }}),而Pongo2使用冒号(如{{ content|truncate:100 }})。这会影响所有带参数的过滤器调用,在迁移大量模板时是最常见的错误来源。 -
**日期格式化陷阱。**Pongo2的
date过滤器仅接受Go原生time.Time类型。在Gridea Pro的渲染上下文中,post.date被序列化为RFC3339字符串而非time.Time对象。直接使用post.date|date:"2006-01-02"会导致整个页面降级为回退横幅。正确的做法是使用预格式化的post.dateFormat字段。 -
**逻辑运算符。**Pongo2 使用英文单词
and、or、not,不支持&&、||、!符号。 -
**长度获取。**使用
|length过滤器而非.length属性(如{% if posts|length > 0 %})。 -
**三元表达式。**Pongo2 不支持
a ? b : c三元表达式,需用{% if %}...{% else %}...{% endif %}替代。 -
**字符串拼接。**不支持
~拼接运算符,在{{ }}中直接相邻输出。 -
**否定包含。**使用
not "a" in b而非"a" not in b。 -
**
include路径。**路径相对于templates/根目录,必须添加.html后缀。 -
**标签内不可换行。**所有
{% %}和{{ }}必须保持单行。 -
**不支持
macro。**Swig/Nunjucks 的macro和 Pug 的mixin均需转换为{% include %}模式。
附录 B:Pug → Pongo2语法转换对照表
Pug语法到Pongo2语法的完整转换对照
| Pug语法 | Pongo2等价写法 | 说明 |
|---|---|---|
extends layout.pug |
{% extends "base.html" %} |
模板继承 |
block content |
{% block content %} |
块定义 |
include partials/head.pug |
{% include "partials/head.html" %} |
子模板引入 |
if condition (缩进) |
{% if condition %}...{% endif %} |
条件判断 |
else if condition |
{% elif condition %} |
多分支条件 |
each item in items |
{% for item in items %}...{% endfor %} |
循环迭代 |
+mixinName(arg1, arg2) |
{% include "partials/xxx.html" %} |
Mixin→Include |
= variable (输出) |
{{ variable }} 或 {{ variable|safe }} |
变量输出 |
!= variable (不转义) |
{{ variable|safe }} |
原始输出 |
// 注释 |
{# 注释 #} |
模板注释 |
case page.type |
{% if %}{% elif %} 链 |
分支选择 |
a(href=url) Text |
<a href="{{ url }}">Text</a> |
链接生成 |
div.class#id |
<div class="class" id="id"> |
元素生成 |
注:以上为 Pug → Pongo2 的转换对照表。该 Prompt 文档同样包含 EJS → Pongo2(14行)、Swig → Pongo2(11行)和 Nunjucks → Pongo2(11行)的完整转换对照,其中 Swig/Nunjucks 与 Pongo2 共享约90%的语法(主要差异仅为文件后缀和 macro 转 include)。
附录 C:LLM使用披露
在本方法论的开发过程中,大语言模型被用作开发和文档编写辅助工具。LLM辅助了迁移Prompt文档的起草、多引擎语法转换对照表的编制,以及验证脚本迁移特有检查逻辑的代码生成。所有LLM输出的内容均经过人工开发者审查、在真实Hexo Pug主题上测试验证,并根据实际迁移过程中发现的问题进行了多轮迭代修正。本工作的核心构思——七阶段迁移流程的设计、动态变量映射推导机制、以及mixin到include的范式转换策略——由人类开发者独立完成。作者对所有内容承担全部责任。