文档章节

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

终于19岁
 终于19岁
发布于 2017/09/10 16:23
字数 957
阅读 530
收藏 16
点赞 0
评论 0

在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岁
粉丝 7
博文 5
码字总数 7636
作品 0
深圳
10 款 Node.js 框架,可用于你的下一个项目

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

局长 ⋅ 2016/12/20 ⋅ 9

10 款 Node.js 框架,可用于你的下一个项目

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

黑魔法 ⋅ 2016/12/21 ⋅ 0

资源 | 2017年GitHub中最为流行的30个开源机器学习项目

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

机器之心 ⋅ 01/06 ⋅ 0

追踪 GitHub 项目的流行度

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

oschina ⋅ 2015/07/06 ⋅ 56

2015 年开源前端框架盘点 TOP 20

2015年已经过去了,作为一个前端开发者,我觉得有必要把过去一年帮助过我或朋友们的优秀开源前端框架做个盘点,希望这些项目能够越来越好,帮助到更多的前端开发者们。 此榜单根据github上s...

wuhen147 ⋅ 2016/01/11 ⋅ 34

Github 编程语言分布统计:JavaScript 称霸

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

陨落人间 ⋅ 2014/11/17 ⋅ 33

精选10大机器学习开源项目 !(附链接)

本文推荐的10大机器学习开源项目是由Mybridge从250个机器学习开源项目中挑选出来的,Github平均star为1385,主题包含:Tensorflow, Augmentation, AlphaGo Zero, NSynth, Deep Neuroevoluti...

技术小能手 ⋅ 05/04 ⋅ 0

10大机器学习开源项目推荐(Github平均star为1385)

翻译 | suisui 出品 | 人工智能头条(AI_Thinker) 本文推荐的10大机器学习开源项目是由Mybridge从250个机器学习开源项目中挑选出来的,Github 平均 star为 1385,主题包含:Tensorflow, Aug...

AI科技大本营 ⋅ 05/03 ⋅ 0

10大Python开源项目推荐(Github平均star2135)

翻译 | suisui 出品 | 人工智能头条(AI_Thinker) 继续假日充电系列~本文是Mybridge 挑选的 10 个 Python 开源项目,Github 平均star 2135,希望你能够喜欢~~ (这些也是来自Mybridge的资源...

AI科技大本营 ⋅ 05/03 ⋅ 0

Github 中被 Fork 最多的库

Github自从2008年上线以来,发展迅速,目前已经成为最流行的代码托管站点。在Github中,开发者除了可以托管自己的项目源码外,还可以 Watch(关注)、Star(加星)、Fork(复制一份)、Pull ...

oschina ⋅ 2012/08/31 ⋅ 27

没有更多内容

加载失败,请刷新页面

加载更多

下一页

服务网关过滤器

过滤器作用 我们的微服务应用提供的接口就可以通过统一的API网关入口被客户端访问到了。但是,每个客户端用户请求微服务应用提供的接口时,它们的访问权限往往都需要有一定的限制,系统并不会...

明理萝 ⋅ 21分钟前 ⋅ 1

【2018.06.21学习笔记】【linux高级知识 14.1-14.3】

14.1 NFS介绍 NFS服务全称是NetWork File System:网络文件系统,最早有sun公司开发的,4.0版本由Netapp公司开发,是基于RPC远程过程调用(Remote Procedure Call)协议的服务。 14.2 NFS服务...

lgsxp ⋅ 30分钟前 ⋅ 0

Day18 vim编辑模式、命令模式与练习

编辑模式 命令模式 :nohl 不高亮显示 :x与:wq类似,如果在更改文件之后操作,两者效果一样;如果打开文件,没有任何操作; :wq会更改mtime,但是:x不会。 练习题 扩展 vim的特殊用法 ht...

杉下 ⋅ 33分钟前 ⋅ 0

Enum、EnumMap、EnumSet

1、Enum 不带参数 public enum Car { AUDI { @Override public int getPrice() { return 25000; } }, MERCEDES { ......

职业搬砖20年 ⋅ 34分钟前 ⋅ 0

Java中的锁使用与实现

1.Lock接口 锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁能够防止多个线程同时访问共享资源。 在Lock出现之前,java程序是靠synchronized关键字实现锁功能的,而Java SE5之后,...

ZH-JSON ⋅ 35分钟前 ⋅ 0

线程组和 ThreadLocal

前言 在上面文章中,我们从源码的角度上解析了一下线程池,并且从其 execute 方法开始把线程池中的相关执行流程过了一遍。那么接下来,我们来看一个新的关于线程的知识点:线程组。 线程组 ...

猴亮屏 ⋅ 37分钟前 ⋅ 0

相对路径和绝对路径

基本概念   文件路径就是文件在电脑中的位置,表示文件路径的方式有两种,相对路径和绝对路径。在网页设计中通过路径可以表示链接,插入图像、Flash、CSS文件的位置。   物理路径:物理路...

临江仙卜算子 ⋅ 41分钟前 ⋅ 0

消息队列属性及常见消息队列介绍

什么是消息队列? 消息队列是在消息的传输过程中保存消息的容器,用于接收消息并以文件的方式存储,一个队列的消息可以同时被多个消息消费者消费。分布式消息服务DMS则是分布式的队列系统,消...

中间件小哥 ⋅ 43分钟前 ⋅ 0

java程序员使用web3j进行以太坊开发详解

如何使用web3j为Java应用或Android App增加以太坊区块链支持,教程内容即涉及以太坊中的核心概念,例如账户管理包括账户的创建、钱包创建、交易转账,交易与状态、智能合约开发与交互、过滤器...

笔阁 ⋅ 43分钟前 ⋅ 0

vim编辑模式、vim命令模式

vim编辑模式 使用vim filename 进入的界面是一般模式,在这个模式下虽然我们能够查看,复制,剪切,粘贴,但是不能编辑新的内容,如何能直接写入东西呢?这就需要进入编辑模式了,从一般模式...

李超小牛子 ⋅ 46分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部