sword.js (for serverless,简称sword.js) 是剑指题解内部沉淀的一款Nodejs框架,用来解决多平台云开发的痛点。我们都很苦恼于在server端运行的代码不能很轻松的部署到云端,甚至是一份代码同时部署到多个平台;虽然这种情况非常少见,但是对于一些中长线的成熟产品来讲, 在你的产品中一定有调用次数很少的微服务,那么为了实现成本和运维解放都会选择把这部分服务迁移到各大厂商提供的serverless服务中,如果你本身就使用了sword.js那么迁移的过程是丝滑的,你可以像打包/部署寻常的Nodejs程序一键上传到云端,你甚至连身边的茶还没喝到,整个过程就已经完成了。
什么是Serverless
在google/wiki上对于serverless的介绍其实有一点不准确,它并不是“无服务器”,我更愿意称之为“一点服务器😄 ”,它也是继传统的后端&运维 -> Devops 的下一代后端运维协作方案,它是运维一大部分概念的抽象,使之能够让后端/甚至是前端开发更容易接受,我们并不需要关心程序的发布和版本,甚至是负载均衡,反向代理…,只需要去写好业务逻辑就可以了!最重要的是,它很便宜,对于创业公司和外包公司,甚至是大型公司的中长线服务能节省很大一笔开支。现在国内外的serverless平台有很多,从aws,到阿里云,腾讯云,Dcloud都有自己的serverless服务,该如何选择哪个厂商sword并不关心,你们只用关心使用跨serverless的框架就可以解决问题就行了~
其他的框架
传统的express,koa我们暂且不做讨论,因为这一类的nodejs框架都是在node之上做一些异/同步模型,提供了中间件等概念,我们可以使用这一类框架做各种商业应用,但是往往应用越来越大,基于异/同步模型的框架不管是性能还是开发效率上都遭到了不小的挑战,所以才有了像nest/egg这一类优秀的框架出现。但是我们的场景是serverless,而且有些人天生不喜欢类,都喜欢hook/函数来构建应用,因为足够简单,所以就诞生了像Midway/TSRPC这样优秀的框架,我时常想象,如果要是这两个框架结合在一起,不就约等于无敌了么?玩笑归玩笑,但是这也是sword的特性之一,我们有着TSRPC的运行时TS校验,也有着Midway函数编程,尽管从功能和受众程度上和两个大山相差甚远,但是相信随着时间的流逝,sword依然是你开发node的小剑,虽然不长,但是锋利无比而且耐用 🥷
sword.js的特性
- TS运行时校验
- 文件系统即路由
- 极速开发&编译
- 跨多个serverless平台(现仅支持server, unicloud端)
- 配套开发套件
- 插件系统
- 生成API文档/前端代码(or 类型提示)