现在支持私有部署同时也支持serverless各个平台的nodejs框架多么?答案是否定的,在2022年越来越多的企业会选择serverless来部署自己的应用,因为它足够轻巧省去了运维的成本,编写一个API可能只需要几行代码,越来越多的平台也推出了自己的云数据库以及云消息队列,我们前端开发编写后端api不再是一个头疼的事情。所以serverless是未来,为此我写了一个框架,它会在web服务器中运行也可以在serverless环境运行,在serverless中我会优先支持unicloud,我将使用这款框架参加2022年的dcloud插件大赛。
简单聊聊这款框架,我为什么要创建一款nodejs框架?
为什么要造轮子
在sword团队中我们使用unicloud构建应用程序,采用了CQRS,我们所有的写操作都由unicloud的云函数完成,但是你会发现在unicloud社区优秀的框架有很多,它们提供了url处理以及逻辑的分发,还有一些特色的框架也提供了诸如上传,和unicloud的部分特性封装,在我看来,这样的框架没有真正解决开发者的问题,比如:
- 我想现在不想用unicloud,我想用传统服务器运行函数
- 我想和云平台解耦,我希望我的云函数的特性和功能实现和某一平台无关
- 我想使用ts开发
- 我想有IDE强力支持
- 我想使用一些开箱即用的方案,比如说hook,又比如HMR
- 我想使用ES开发nodejs程序,使用先进的技术对程序进行捆绑(treeshaking...)
- 如果要满足上面的特性,那么只有midway.js了,midway.js很酷,但是它并没有unicloud的faas插件,而且我希望框架能够让sword团队更好的构建程序,所以我们造一个轮子,来解决这些事情。
简单说说这个框架的技术栈
这款框架是我目前最得意的作品, 但是时间太仓促, 它的功能实现肯定不是最好的, 所以我需要各位的支持测试, 而且我也希望能拿到今年的插件大赛的名次; 去年拿到了三等奖也是我写的一款小程序, 今年带来的这个作品含金量非常高哈哈哈.
整个框架都是ts, 我使用了monorepo架构基于pnpm, 所有的源代码你都可以在packages中找到, 框架核心就是runtime那个文件夹. 整个框架最主要的2个部分就是cli + runtime, cli主要做多端的编译功能, 没错cli不仅做了打包还做了编译, 而且打包也是分环境的, 开发环境我是用的是swc (rust) 进行打包, 生产程序是使用esbuild (go), 所以极速是这个框架的特点, 不仅如此, runtime部分我实现了一个简易的异步依赖调度器使之不同平台, 都可以动态加载依赖, 所以server平台和unicloud平台互相不牵扯.
接下来, 我大概梳理一下我这个框架的特性, 希望你可以喜欢
- 完全拥抱TypeScript
- 支持跨平台: Server/阿里云/腾讯云/Cloudflare/AWS/Unicloud
- 基于文件系统的路由
- 开箱即用的开发套件
- TS运行时类型校验
- 生成API文档,兼容markdown以及openapi3.0
- 完全 Hook 的写法与设计
框架github地址: https://github.com/swordCodePractice/sword-framework
dcloud插件市场求支持求支持求支持: https://ext.dcloud.net.cn/plugin?id=8433
我们的中文文档: https://www.yuque.com/mlgrgm/lrf0ra
我们的官方网站: https://swordcodepractice.github.io/backend-framework-website/
0 个评论
要回复文章请先登录或注册