楼主工作主要开发语言是 node.js
============ update ============== 发这个主题,不是为了争论 谁的框架更好,仅仅是为了学习探讨。 lu 本身代码也就200多行,是很适合很多人去了解学习一个 web 框架原理的。
今天要介绍的 web 框架,是基于 Go 语言写的。https://github.com/vincentLiuxiang/lu该项目已被 Go 著名项目 fasthttp在官方推荐
大家先别着急喷!!! 大家先别着急喷!!! 大家先别着急喷!!!
所谓,技多不压身,多学一点东西总是好的。
故事前传
大约在半年前,我在给 connect( connect 可以认为是更轻量级的 express ) 框架的作者提了一个可以提高性能的 pull request。
这个里是讨论链接:https://github.com/senchalabs/connect/pull/1085
该想法得到了作者的认可,但是对 connect 内部存储中间件的 stack 属性有一定的变化,作者担心会影响到正在使用 connect 的人。 为了向前兼容(其实是兼容的,只是如果用户使用了一些 connect 实例的内部属性,可能会有问题), 作者希望我的 pull request 可以写的更向前兼容一点。
于是我写了一个向前兼容,但是代码失去其优雅性的版本。
苦思冥想后,我放弃了 pull request 。 准备用 node.js 再造一个 与 connect api 完全一致的轮子,只是性能更高。
但是想想,觉得完全没有必要那段时间正好在帮一个朋友解决一个 Go 项目的问题, 发现 Go 里面的开发框架要么非常重,要么完全没有 url 路由匹配,配合 next 触发的中间件的机制, 缺少像 node.js 这种可插拔的,又有 url 路由匹配配合 next 触发中间件机制的轻量级框架。
于是决定,把提给 connect 的想法用 Go 实现了一遍。
go 语言版 connect / express 框架 —— lu
其api 风格、 原理与 connect / express 非常像。
这个框架写出来也有半年多时间了,感觉埋在那里有点可惜。 最近有点空,决定出来宣传一下,核心代码不到300行,测试丰富,代码质量A+, 该项目已被 Go 著名项目 fasthttp在官方首页推荐
希望多学点东西的朋友可以去看看,一起探讨,核心代码真的很少。 lu 目前配套的中间件(类似,express / koa 的中间件生态),还不多,感兴趣的朋友也可以和我一起开发。