当前位置: 首页 > 后端技术 > Node.js

Node中间层实践(一)——基于NodeJS的全栈开发

时间:2023-04-03 12:29:25 Node.js

版权声明:更多文章请访问我的个人网站KeyonY,转载请注明出处。前言最近公司有个新项目。由于后端人手不足,果断提出使用node中间层方案,得到了老大的支持,于是来了一个大订单。Node中间层允许前端做网站路由、页面渲染、SEO优化。对于之前没有接触过这些内容的前端玩家来说,是锻炼我们网站架构的好机会。此外,这也是一个很好的机会,可以进一步了解Node,为即将到来的前端工程时代做好准备。为什么选择node中间层在讲这个话题之前,先给大家分享一篇文章(【探索】NodeJS中间层搭建),让我对node中间层有了更深入的了解,尤其是淘宝上一张PPT。现有开发模式的适用场景余波提到的几种开发模式各有各的适用场景,没有一种可以完全替代另一种。比如基于后端的MVC做一些同步展示的业务是非常高效的,但是遇到同步和异步的页面,跟后端开发沟通起来会比较麻烦。基于Ajax的SPA开发模式比较适合APP类场景的开发,但是只适合APP,因为SEO等问题不好解决,而且对于很多类型的系统来说,这种开发方式太重的。前后端分离在职责上进行划分,node中间层实现前后端分离:Front-end:负责View和Controller层Back-end:只负责对于Model层,业务处理/数据等。以我们公司为例,之前网??站的前端项目,是基于后端MVC的。遇到同步和异步页面时,频繁的和后端通信,对于前后端来说都是非常痛苦的。对于前端来说,发挥的空间非常有限。比如性能优化只能在前端做。需要配合后端来实现,比如后面会写的无刷新加载。前端一旦掌握了Controller,就可以做路由设计,网站目录结构,网站前端架构。一旦掌握了View,就可以通过后端模板引擎(jade/pug、Ejs、swig等)边写边绑定数据。更不用说,还有pug这样的mixins,让我们把html功能化,大大提高效率。NodeJS允许前端在不学习新语言的情况下做这些事情。基于NodeJS“全栈”开发,下图简单形象地说明了Node中间层中间层的性能问题。多加一层通信肯定会造成一定的性能损失。但是,分层带来的损失必须用其他的好处来弥补,合理的分层可以明确职责,便于协作,大大提高开发效率。也可以通过优化通信方式和协议,尽可能减少损失。以我公司的网站为例:一个静态详情页上有很多(动态)数据,比如用户画像、评论信息、订单等,需要5、6次异步请求,节点中间层可以代理这些请求,这很容易实现Bigpipe。在PC端,你觉得发送5、6个异步请求没问题,但是在无线端,在客户端手机端创建一个HTTP请求是非常昂贵的。通过这个优化,性能可以一下子提高好几倍。Node无所不能,为什么是JAVA/PHP?我们的初衷是前后端分离。如果我们考虑这个问题,那就违背了我们的初衷。即使用Node来代替Java/PHP,也不能保证今天遇到的各种职责不明等问题不会发生。我们的宗旨是分层发展,专业的人,专注做专业的事。基于JAVA/PHP的基础设施已经非常强大和稳定,更适合现在的架构。前端的任务更重要。常见的前后端分离开发模式,后端为前端提供路由结构和页面数据绑定,前端只需要切分页面和少量逻辑即可。在node中间层,前端不仅需要切分页面,做页面逻辑,还需要做url设计,页面数据绑定,联调和通信,还要考虑SEO问题,伪静态页面,title/关键字设置、网站地图,甚至错误日志等等。虽然前端的工作量增加了很多,但是基于模块化的开发提高了整体效率。对于后端程序员来说,界面集成的工作交给前端服务器处理。同时大大降低了与前端的耦合度,降低了工作量和工作效率。另外,由于前后端分离,可以把测试分开,专门测试界面,专门测试ui层。综上所述,我认为基于NodeJs的全栈开发模式在未来会越来越流行,这也将引领前端进入工程化时代。但要将Node全栈开发变成稳定便捷的开发工具,还有很长的路要走。公司此次的交易平台项目是一个很好的实践。接下来,请继续关注我对这个项目的总结,希望能给大家带来启发。欢迎继续关注本博的更新Node中层实战(一)——基于NodeJS的全栈开发Node中层实战(二)——搭建项目框架Node中层实战(三)——webpack配置Node中层层实践(四)——模板引擎pugNode中间层实践(五)——express-中间层的逻辑处理