Go   发布时间:2022-04-09  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何使用blackfriday向golang模板(html或tmpl)提供降价?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用MarTini框架,@L_489_0@一些markdown文件,我想在tmpl / html模板中将其呈现为 HTML.

这样的markdown文件

title: A Test Demo
---
##ABC
> 123

和模板文件如下所示:

<head>
  <title>{{name}}</title>
</head>

<body>
  <h2>{{abc}}</h2>
  <blockquote>
    <p>{{xyz}}</p>
  </blockquote>
</body>

我使用blackfriday解析markdown并返回[]字节类型,下一步我想将markdown文件渲染到此模板,并将每个块放在正确的位置,那么我该如何正确地做到这一点?还是用任何方式做得更好?

实现这一点的一个方法是使用 Funcs方法向模板功能添加自定义函数.有关更多信息,请参阅 the template package docs功能部分.

给定一个模板文件page.html,一些作者w(可能是一个http.ResponseWriter)和一些包含要包含数据的字段的结构体p放在一个模板字段中,你可以这样做:

定义一个函数

func markDowner(args ...interface{}) template.HTML {
    s := blackfriday.MarkdownCommon([]byte(fmt.Sprintf("%s",args...)))
    return template.HTML(s)
}

将其添加到模板功能图:

tmpl := template.Must(template.New("page.html").Funcs(template.FuncMap{"markDown": markDowner}).ParseFiles("page.html"))

执行模板:

err := tmpl.ExecuteTemplate(w,"page.html",p)
if err != nil {
    http.Error(w,err.Error(),http.StatusInternalServerError)
}

然后,在你的模板文件中,你可以这么说:

{{.body | markDown}}

它将通过您的markDowner函数传递Body.

Playground

大佬总结

以上是大佬教程为你收集整理的如何使用blackfriday向golang模板(html或tmpl)提供降价?全部内容,希望文章能够帮你解决如何使用blackfriday向golang模板(html或tmpl)提供降价?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。