文档章节

在Github中stars数最多的Go模板引擎库集合

终于19岁
 终于19岁
发布于 2017/09/10 16:23
字数 957
阅读 1017
收藏 16

在Go语言世界中,除了标准库自带的html/template包之外,还有种类繁多的第三方模板引擎库,这些库大多来自其他语言的经验继承。

提起Go语言模板引擎,很多人自然会想到pongo2模板引擎,这也是笔者接触最早的Go语言模板引擎,几乎所有的Go主流流行的Web框架都对它提供支持,你甚至在xormplus/xorm这个数据库框架库中也能看到他的身影,它是一个像django语法的Go语言模板引擎,如果你以前做过python开发,那你一定会对它无比亲切。

另一个笔者喜欢的Go语言模板引擎是jet,它功能强大,且高效,性能相当出色。另外一大特点是IDE支持,它有一个IDEA插件可供开发者使用,Github地址:https://github.com/jhsx/GoJetPlugin。这也是目前笔者主要使用的Go语言模板引擎之一(以前还有一些老项目是使用pongo2模板引擎的,另外xormplus/xorm中的sql模板也是采用pongo2)。

还有一个笔者想提及的Go语言模板引擎库是go-template,它更像一个模板引擎适配器,它的最大特色是同时支持standard html/template、amber、django、handlebars、pug(jade)、markdown六种模板引擎。

Go语言模板引擎其实主要分两大类,一类是非预编译生成Go代码的模板引擎(如以上提及的这些),另一类则是预编译生成Go代码的模板引擎,这一类模板引擎由于先天优势,性能将更为出色一些,是否采用这类引擎,要看你项目的需求来权衡。这类引擎的佼佼者是hero,也是一位国人开发的Go语言模板引擎库。

目前笔者使用的Go语言模板引擎主要是pongo2jethero。如果您还有想推荐的Go语言模板引擎库,欢迎留言分享。

下面是我整理的Go语言模板引擎库列表,相信总有一款适合您:)

Project Name Stars Forks Description
pongo2 1028 103 Django-syntax like template-engine for Go
mustache 853 128 mustache.go is an implementation of the mustache template language in Go.
hero 795 39 A handy, fast and powerful go template engine.
quicktemplate 794 48 Fast, powerful, yet easy to use template engine for Go. Optimized for speed, zero memory allocations in hot paths.
amber 746 44 Amber is an elegant templating engine for Go Programming Language, inspired from HAML and Jade
ace 616 32 Ace is an HTML template engine for Go. This is inspired by Slim and Jade. This is a refinement of Gold.
gorazor 594 70 GoRazor is the Go port of the razor view engine originated from asp.net in 2011.
jet 400 22 Jet is a template engine developed to be easy to use, powerful, dynamic, yet secure and very fast.
ego 323 25 Ego is an ERb style templating language for Go. It works by transpiling templates into pure Go and including them at compile time. These templates are light wrappers around the Go language itself.
raymond 186 16 Handlebars for golang
fasttemplate 143 24 Simple and fast template engine for Go
soy 120 18 Go implementation for Soy templates (Google Closure templates)
kasia.go 70 5 Kasia.go is a Go implementation of the Kasia templating system.
ftmpl 49 1 Fast typesafe templating for golang
go-template 30 3 The best way to work with different type of Template Engines and Parsers for Go Programming Language
damsel 19 1 Markup language featuring html outlining via css-selectors, extensible via pkg html/template and others.
Ego 15 0 Embedded Go – a Go-like template language

下面是来自Go Template Benchmark的部分Go语言模板引擎库的性能对比数据

full featured template engines

Name Runs µs/op B/op allocations/op
Ace 500,000 8.972 1,712 42
Amber 1,000,000 5.628 1,440 38
Golang 1,000,000 5.379 1,360 37
Handlebars 500,000 10.174 4,210 82
JetHTML 3,000,000 1.209 0 0
Kasia 1,000,000 3.351 1,184 25
Mustache 1,000,000 3.544 1,568 28
Pongo2 1,000,000 4.681 2,360 46
Soy 1,000,000 3.067 1,376 25

precompilation to Go code

Name Runs µs/op B/op allocations/op
Ego 5,000,000 0.793 85 8
Egon 3,000,000 1.541 149 12
EgonSlinso 20,000,000 0.311 0 0
Ftmpl 3,000,000 1.298 1,141 12
Gorazor 5,000,000 1.014 613 11
Hero 30,000,000 0.162 0 0
Quicktemplate 20,000,000 0.289 0 0

© 著作权归作者所有

共有 人打赏支持
终于19岁
粉丝 9
博文 5
码字总数 7636
作品 0
深圳
私信 提问
追踪 GitHub 项目的流行度

介绍 GitHub 是世界上最大的开源软件托管平台,因此追踪 GitHub 流行度对于软件开发者和用户都非常重要。本篇文章是介绍一个 GitHub 流行度追踪框架,使用他们的 Stars 数目来评估 GitHub 的...

oschina
2015/07/06
8.5K
56
10 款 Node.js 框架,可用于你的下一个项目

Node.js 是一个开源的跨平台运行时环境,用于开发服务器端和网络应用程序,它基于 Google Chrome V8 JavaScript 引擎构建,你可以使用 Node.js 中的 JavaScript 来实现用 Ruby 或 PHP 所做的...

黑魔法
2016/12/21
332
0
资源 | 2017年GitHub中最为流行的30个开源机器学习项目

  选自Mybridge   机器之心编译   参与:李泽南      2017 年里哪些机器学习项目最受人关注?Mybridge 为我们整理了一份 Top 30 列表,以下所有项目均附有 GitHub 链接。      ...

机器之心
01/06
0
0
10 款 Node.js 框架,可用于你的下一个项目

Node.js 是一个开源的跨平台运行时环境,用于开发服务器端和网络应用程序,它基于 Google Chrome V8 JavaScript 引擎构建,你可以使用 Node.js 中的 JavaScript 来实现用 Ruby 或 PHP 所做的...

局长
2016/12/20
6.2K
9
Github 编程语言分布统计:JavaScript 称霸

英文来自:Asas Dhamani 【编者按】Github作为全球最大的开源项目托管平台,每天都会有许多项目托管在上面,有些程序员会好奇,这么多项目,有哪些项目是基于Java或者Python开发的呢?本文作...

陨落人间
2014/11/17
8.8K
33

没有更多内容

加载失败,请刷新页面

加载更多

MySQL 主从同步

MySQL主从介绍 MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步的 MySQL主从是基于binlog的,主上须开启bin...

野雪球
7分钟前
0
0
OSChina 周一乱弹 —— 温柔的人应该这样

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @clouddyy :#每日一歌# 《フィクション-sumika》 《フィクション-sumika》 手机党少年们想听歌,请使劲儿戳(这里) 假期时间干嘛去, @for...

小小编辑
56分钟前
52
6
[LintCode] Serialize and Deserialize Binary Tree(二叉树的序列化和反序列化)

描述 设计一个算法,并编写代码来序列化和反序列化二叉树。将树写入一个文件被称为“序列化”,读取文件后重建同样的二叉树被称为“反序列化”。 如何反序列化或序列化二叉树是没有限制的,你...

honeymose
今天
6
0
java框架学习日志-7(静态代理和JDK代理)

静态代理 我们平时去餐厅吃饭,不是直接告诉厨师做什么菜的,而是先告诉服务员点什么菜,然后由服务员传到给厨师,相当于服务员是厨师的代理,我们通过代理让厨师炒菜,这就是代理模式。代理...

白话
今天
29
0
Flink Window

1.Flink窗口 Window Assigner分配器。 窗口可以是时间驱动的(Time Window,例如:每30秒钟),也可以是数据驱动的(Count Window,例如:每一百个元素)。 一种经典的窗口分类可以分成: 翻...

满小茂
今天
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部