唯品秀前端博客

不讨论代码,只谈概念理解,很多人都听说过node做前后端分离开发中间层中间件啥的,但绝大多数人似乎又不太清楚是个什么东西?想学习一个东西那必然先要了解这东西能干嘛,学完能达到什么目的。

为什么引入Node中间层?

现在说前后端分离应该算是老掉牙话题了,基本是个web开发的都知道,就是后端提供数据接口,前端调用,那么一对接,嗯哼,前后端分离开发成了,但你有没有想过,在这种前后端分离状态下,我们的数据具体是怎么流转的,甚至什么招聘面试谈到什么http多少次握手这类问题

从(1)用户在浏览器中输入网址-->到(2)完成一次完整的http请求-->到(3)浏览器加载html、css、js等资源-->再(4)发起Ajax请求数据;这个过程中,由于第(4)步依赖于第(3)步骤,需要等资源都到齐才能渲染,因此就会造成:

  • 布局渲染出来了,但是数据还没有渲染出来,需要显示loading、或者白屏
  • 无法做SEO,由于数据渲染是通过js写到dom内的
  • 有时候还会有接口跨域的问题
  • ......等
  • 因此,因此我们试着引入Node做中间层。

二:中间层做什么事?

其实,使用node作为中间层,就相当于前端和传统的java/php服务端增加了一个隔层,那么很明显,这么看是提高开发成本且对性能有削弱的感觉,毕竟多一次交互,但你看看中间层到底能做什么,以至于为什么我们需要去用它:

  • 接受客户端(浏览器)请求,向后端请求数据,接收后端返回的数据,返回给客户端
  • 合并接口请求
  • 拆分大接口
  • 页面渲染
  • 定义的路由
  • 做数据缓存
  • ...等

场景示例

那么说到这里,可能还是很多小伙伴有点模糊,感觉好像说了些啥,好像又什么都没说,那我再用实际项目白话文举例。

案例一

假如说老板说你这做的这个页面,打开速度挺慢的啊,能不能优化下啊,用户体验太差了。传统方式前端能做的无非就是打包压缩页面代码,压缩图片等,那么一旦使用中间层,可以在中间层再次做优化,合并接口请求,数据缓存等等,这样是不是感觉前端可控制范围手伸的就更长了?

案例二

在做前后端开发时候,我们是不是有些拿到客户端的数据格式并不是我们想要的,每次拿到数据后我们在前端代码里要大量处理,其实这个事情也完全可以搬移到中间层做处理,这就是前端请求接口转发,前端请求node中间层,node请求后端java/php,node中间层拿到数据一顿处理,然后再抛给前端,这样的话,前端页面逻辑是不是更干净了?前端只做数据渲染,不做过多的逻辑处理,这就是我们想做的。

案例三

再次说到跨域问题,传统前后端分离模式跨域问题是经常会遇到的,那么我们是不是都是需要借助什么代理?jsonp?又或者求着后端允许跨域?那么一旦你通过接口转发,跨不跨域你说的算,因为服务端之间是不存在跨域问题,当你的中间层node服务器拿到数据后,抛给前端,这时候数据已经完全你来控制

小结

你可以理解这是一篇水文,但我相信还是有小伙伴需要了解,知道这个概念大概是怎么回事。

本站所有文章、图片、资源等如无特殊说明或标注,均为来自互联网或者站长原创,版权归原作者所有;仅作为个人学习、研究以及欣赏!如若本站内容侵犯了原著者的合法权益,可联系我们进行处理,邮箱:343049466@qq.com
赞(14) 打赏
标签:

上一篇:

下一篇:

相关推荐

4 条评论关于"浅谈Node.js做中间层看法(又一篇水文)"

表情

最新评论

  1. 轩陌
    Mac OS X Chrome 75.0.3770.142

    妹,天天更

    1. 管理员
      Windows 10 Chrome 57.0.2987.98

      @轩陌傻屌,没看我最近很忙吗,更毛线

  2. vanhua
    Windows 7 Chrome 74.0.3729.169

    最近有点懈怠了,文也发得少了!

    1. 管理员
      Mac OS X Chrome 75.0.3770.100

      @vanhua最近公司项目有点忙

  3. 暂无留言哦~~
谢谢你请我吃鸡腿*^_^*

支付宝扫一扫打赏

微信扫一扫打赏