如何在Handlebars的{{#each}}循环后实现Markdown换行?
解决Handlebars循环生成Markdown表格行时的换行问题
问题核心
用Handlebars遍历JSON数据生成Markdown表格行时,无论用<br>、\n还是ASCII字符,输出内容始终是一整行,无法生成纯文本换行的表格结构。
有效解决方案
方案1:模板中直接添加实际换行(最简单)
修改Handlebars模板,在循环块内的表格行末尾手动添加回车换行(让每一行表格代码单独占一行):
{{#each items}} | **{{name}}** | {{system.d.v}} | {{system.a.v}} | {{system.p}} | {{/each}}
Handlebars会保留模板中的实际换行符,渲染后的.md文件会自动生成每行一个表格行的结构,完全符合Markdown纯文本换行要求。
方案2:注册自定义换行助手(适合模板压缩场景)
如果你的模板是压缩格式(无多余换行),可以注册一个Handlebars自定义助手来输出纯文本换行符:
// 注册换行助手 Handlebars.registerHelper('newline', function() { return new Handlebars.SafeString('\n'); });
然后在模板中调用该助手:
{{#each items}}| **{{name}}** | {{system.d.v}} | {{system.a.v}} | {{system.p}} |{{newline}}{{/each}}
为什么之前的方法无效
<br>是HTML换行标记,仅在HTML渲染时生效,不会生成纯文本换行,Markdown无法识别为单独行;- 直接在模板中写
\n会被Handlebars当作字面量输出,而非实际的换行符,需要通过自定义助手或模板实际换行来触发真实换行。
内容的提问来源于stack exchange,提问作者wendigo
相关产品推荐
相关产品推荐

