了解前后端分离
前后端分离就是前端调用 后端提供的api 接口拿数据 后端提给api接口给前端
前端只需要关注页面的样式与动态数据的解析渲染,而后端专注于具体业务逻辑。
传统的MVC
原来每次都要经过
控制器->模型->视图
视图是依赖于模型
问题1:
渲染视图的过程是在服务端来完成的,最终呈现给浏览器的是带有模型的视图页面,性能无法得到很好的优化
改进后:
采用ajax请求的方式
服务端接受该请求并返回JSON数据返回给浏览器,最后在浏览器中进行界面渲染
问题2:
SEO 搜索引擎优化会十分不方便 百度爬虫是爬不到异步加载的数据
资源消耗严重,在业务复杂的情况下,一个页面可能要发起多次ajax请求才能将页面渲染完毕
PC端倒是没啥 如果是APP手机端的话就特别耗资源了,打开的速度就跟手机性能的好坏有关
(SEO 自己的网站在搜索引擎中更容易被别人发现。
我们把网页地址提交给百度,百度就会派出爬虫来阅读我们的网页,
如果它觉得我们的内容有意义,百度就会收录,
这样在百度搜索中输入关键字就可以搜到我们的网站了)
问题3:静态资源,如果一个页面有很多静态资源如100张图片就会访问后台100次增加服务端的压力
前后端分离
后端 java 前端 nodejs +浏览器
加了个中间层node js
NodeJs的作用在MVC中相当于C(控制器)作为桥梁架接服务器端API输出的JSON,然后自己这边进行处理数据 最后输出给浏览器的是html代码字符
以获取用户列表为例
html中js->发ajax请求->nodejs(restful api)->转发http请求->java端(restful api)->读取数据库后返回给->nodejs->再转发给html->html
restful: 遵守了rest 原则 的web服务
定义这样一套统一的接口,在web,ios,android三端都可以用相同的接口
rest原则:
<1>网络上的所有事物都被抽象为资源
<2> 每个资源都有一个唯一的资源标识符
<3> 同一个资源具有多种表现形式(xml,json等)
<4> 对资源的各种操作不会改变资源标识符
<5> 所有的操作都是无状态的