为什么选择node中间层
文章节选自【探索】NodeJS中间层搭建
现用的开发模式适用场景
- 以后端的为主的MVC模式 在实现一些同步展现的业务效率很高 但是遇到异步同步结合的页面 在与后端沟通就会显得相对麻烦一些
- ajax为主的spa型开发模式 比较适合开发app类型的场景 但是只是适合做app 因为seo问题不好解决 对于很多类型的系统 这种开发方式也过重
前后端分离
从职责上划分 node实现了前后端分离的中间层
-
前端负责 view 和 controller 层
-
后端负责 model 业务处理/数据等
前端掌握了Controller,就可以做路由设计、网站目录结构、网站前端架构。
掌握了View,就可以通过后端模板引擎(jade/pug,Ejs,swig等),边写边绑数据。更别提,pug之流 还有mixin,让我们对 html进行函数化,大大提高效率。
NodeJS让前端无需学习一门新的语言,就能做到这些事情。
基于NodeJS“全栈”式开发
下面的这张图很简单形象的说明了Node中间层
中间层的性能问题
多加了一层通讯,肯定会有一定的性能损耗。但分层带来的损失,一定能在其他方面的收益弥补回来,而且合理的分层能让职责清晰、方便协作,大大提升开发效率。也可以通过优化通讯方式和协议,尽可能把损耗降到最低。
Node什么都能做,为什么还要JAVA/PHP?
我们的初衷是做前后端分离,如果考虑这个问题就有点违背我们的初衷了。即使用Node替代Java/PHP,我们也没办法保证不出现今天遇到的种种问题,比如职责不清。我们的目的是分层开发,专业的人,专注做专业的事。基于JAVA/PHP的基础架构已经非常强大而且稳定,而且更适合做现在架构的事情。
前端的任务更重要了
常见的前后端分离的开发模式中,后端为前端提供了路由结构和页面的数据绑定,前端只需要切页面和少量的逻辑。
在node中间层中,前端不仅仅要切页面和做页面逻辑,还要做url design、页面数据绑定、联调与沟通,还要考虑SEO的问题,伪静态页面、title/keyword设置、网站地图,甚至包括错误日志等等。
虽然前端的工作量增加了不少,但是基于模块化的开发,让总体的效率提升了。
对于后端程序员,接口整合的工作交给了前端服务器进行处理,同时和前端耦合度大大降低,工作量和工作效率都减少了。
另外,由于前后端分离,测试都可以分开来了,专门测试接口的和专门测试ui层。
总结
我觉得,以后基于NodeJs的全栈式开发的模式将会越来越流行,这也会引领前端步入工程化时代。但是要把Node全栈开发变成一个稳定的、方便的开发工具,还有很多路要走。这次公司的交易平台项目就是一个很好的实践,接下来,请继续关注我对这个项目的总结,希望能给各位带来灵感。