对于新入门的小伙伴来说,选择一个合适的nodejs框架可能是一件很头疼的事情,我最初也为这个头疼过,下面分享一下我的框架选择之路
nodejs的框架
最近来node的火热,带动了一大批的框架,例如
- express
- koa
- sails
- loopback
- thinkjs
- egg
这些是我比较过的框架,下面依次做个简单介绍
express
这个是使用最多的框架,也是各个推荐新手入门的框架。
Express 不对 Node.js 已有的特性进行二次抽象,只是在它之上扩展了 Web 应用所需的基本功能(个人感觉相当于node中的jquery)
- 封装了路由
- 静态资源托管
- 中间件的概念
- 内置了jade,ejs模板引擎
个人评价,express适合小型项目,不适合大型企业级项目,个人用用还可以,做为快速入门是个很好的选择,用过之后就可以考虑进入 koa 框架的道路
koa2
koa 是比 express 思想更先进的框架,是express原班人马打造
koa解决的最大问题,利用async await的新语法特性,解决回调地狱的问题
koa 与 express 最大的不同,个人觉得有3点:
1.在于 handler 的处理方法,express 是普通的回调函数, koa 是利用ES7 中 Async/Await 的特性,没有回调,没有回调,就大大加速了开发速度这一点而言,已经足以让我们跪舔了
2.koa是洋葱中间件模式,执行到next的时候,会去调用下一个中间件,下个中间件执行完再接着执行上个中间件next下面的代码
3.koa把 request, response 封装到了同一个上下文对象 content
最为express的进化,确实带来更好的开发效率,成本只需要学西一下async await的新语法特性。可以说作为express框架的进阶框架是非常好的了
后面的这几个都是企业级框架
express =》koa 之后,最大的问题就是开发项目的时候缺少约束,单人开发还好,多人的时候,各种目录结构,各种包的选择,百花齐放的代码风格。都是团队开发头疼的事情。
因为本人之前做过php开发,laravel框架的使用起来很舒服(优雅!),还有配套的laravel-admin。所以一直想找一个能像laravel这样的node框架提高开发效率
回到正题,sails , loopback, thinkjs, egg 都是企业级框架,我们又该如何选择
Sails 是基于 exrpess 的大而全的框架,MVC框架,旨在模拟熟悉的Ruby on Rails框架的MVC模式,但支持现代应用程序的需求。捆绑了一个强大的ORM,即Waterline。自动生成的REST API
LoopBack 是建立在 Express 基础上的企业级 Node.js 框架,只需编写少量代码就能创建动态端到端的 REST API,一致化的模型关系和对 API 访问的权限控制等
ThinkJS 是国内360团队推出的一款面向未来开发的 Node.js 框架,整合了大量的项目最佳实践,让企业级开发变得如此简单、高效。框架底层基于 Koa 2.x 实现,兼容 Koa 的所有功能
Egg.js是《阿里旗下产品》基于Node.js 和 Koa的一个Nodejs的企业级应用开发框架,它可以帮助开发团队及开发人员降低开发和维护成本。Egg.js则是按照约定进行开发,奉行『约定优于配置』,具备提供基于Egg定制上层框架的能力、
高度可扩展的插件机制、内置多进程管理、基于Koa开发,性能优异、框架稳定,测试覆盖率高、渐进式开发、开发成本和维护成本低等特点。
个人结论:
个人最终选择了 Egg 框架,当然其他都是很好的框架,但是我在分别用这4个框架新建了项目之后,更喜欢Egg框架。
首选,egg是基于 koa2 的,async的特性让我们避免了回调地狱。洋葱式的中间件架构让我们更容易后置逻辑,内置的多进程管理会帮我们更好的利用服务器性能。更方便的单元测试,更加约束的目录架构
推荐新手的进阶之路是:express -> koa -> egg