Golang开发的Web服务器

 go教练   2019-08-05 15:00   43 人阅读  0 条评论

最新HTTP/2标准已经发布,是基于谷歌QUIC的技术升级而成。虽然标准已经发布,但是目前还鲜有应用支持,那么有没有方法进行技术尝鲜呢?答案是肯定的。本文给大家介绍一个Golang开发的Web服务器应用Algernon,作为一个单文件的Golang应用内置了HTTP/2,Lua,Markdown,Pongo2,HyperApp,Amber,Sass(SCSS),GCSS,JSX,BoltDB的功能,支持 Redis,PostgreSQL,MariaDB / MySQL数据库。支持限速,插件,用户和权限等各种功能。所有这些都包含在一个自包含可执行文件中,麻雀虽小五脏俱全。

 微信截图_20190805094336.png

技术架构

使用Golang开发,后端数据库可以使用Bolt(内置),MySQL,PostgreSQL或Redis(推荐)。对各种功能支持总共使用了下面的类库:

permissions2用于处理用户和权限;gopher-lua用于解释和运行Lua;http2用于服务HTTP/2,QUIC用于服务QUIC;blackfriday用于Markdown渲染;amber用于Amber模板;Pongo2用于Pongo2模板;Sass(SCSS)和GCSS用于CSS预处理;logrus用于日志记录;goja-babel用于从JSX转换为JavaScript;tollbooth用于速率限制;pie用于插件支持;graceful用于优雅关闭。

设计思想

该项目源于用Markdown,Pongo2,Amber,HTML或JSX(+ React)等编写应用,并用CSS样式支持和设计。数据使用Lua脚本与Redis,BoltDB,PostgreSQL或MariaDB/MySQL链接操作。

Amber和GCSS是时下静态网站的最佳组合方式,与HTML和CSS相比,它允许更清晰的架构,减少内容重复,也很容易使用Lua提供数据,支持MVC架构对模型(M),控制器(C)和视图(V)的更好的分割。

Pongo2,Sass和Lua也是很好的一个选择,而且Pongo2比Amber更灵活。

Bolt是一个纯粹的key/value存储,使用Golang编写。Bolt无需预先安装设置数据库,内置在Algernon中使用。也支持广泛使用的数据库,比如MariaDB/MySQL和PostgreSQL。

Algernon以下文件进行特殊渲染和解析以下文件(后缀),按优先顺序排列:

index.lua是Lua代码,动态lua脚本处理。

index.html HTML默认页面。

index.md 渲染为HTML下的Markdown代码。

index.txt 纯文本文件。

index.pongo2,index.po2或index.tmpl渲染为HTML的Pongo2代码。

index.amber渲染为HTML的Amber代码。

index.hyper.js或index.hyper.jsx渲染为HTML的JSX + HyperApp代码

data.lua是Lua代码,其中函数和变量可用于同一目录中的Pongo2、Amber和Markdown页面。

如果将单个Lua脚本作为命令行参数提供,用于独立服务器。它可用于设置处理程序或为特定URL前缀提供文件和目录。

style.gcss是GCSS代码,支持对同目录下的Pongo2,Amber和Markdown页面的样式。

总之,Algernon支持对以下文件扩展名的处理:

Markdown:.md(渲染为HTML)

Pongo2:.po2,.pongo2或.tpl(渲染为任何文本,通常为HTML)

琥珀色:.amber(渲染为HTML)

Sass:.scss(渲染为CSS)

GCSS:.gcss(渲染为CSS)

JSX:.jsx(渲染为JavaScript / ECMAScript)

Lua:.lua(提供自己的输出和内容类型的脚本)

HyperApp:.hyper.js或.hyper.jsx(渲染为HTML)

根据扩展名为其他文件指定mimetype。

没有索引文件的目录显示为目录列表。

尽可能使用UTF-8。

可以通过命令行或lua脚本配置服务器,但是配置是非必须的,默认无需配置既可以使用。

技术特点

支持HTTP,HTTP/2,默认启动HTTPS(HTTP/2需要浏览器支持)。

支持Lua动态程序,可以使用Lua脚本处理程序。

Algernon可执行文件为本机静态编译编,速度相当快。

适用于Linux,OS X和64位Windows。

以上就是今天给大家介绍的Golang开发的Web服务器如果你还想了解更多关于golang开发的知识技巧,可以继续关注我们http://www.fastgolang.com

本文地址:http://fastgolang.com/126.html
版权声明:本文为原创文章,版权归 go教练 所有,欢迎分享本文,转载请保留出处!

 发表评论


表情

还没有留言,还不快点抢沙发?