GMTC2018 《前后端分离在APICloud的实践》 申成波
2020-02-27 192浏览
- 1.前后分离在APICloud的实践 申成波 APICloud 大客户技术总监
- 2.
- 3.
- 4.• 为什么要前后分离 • 分离的优势与劣势 • 实践中的思考 • 当前的分离实践
- 5.前后分离带来了什么 职责清晰 效率提升 发展空间
- 6.基于NodeJS“全栈”式开发
- 7.为什么要增加一层 Node.js? 现阶段我们主要以后端 MVC 的模式进行开发,这种模式严重阻碍了前端开发效率,也让后端不 能专注于业务开发。 解决方案是让前端能控制 Controller 层,但是如果在现有技术体系下很难做到,因为不可能让所 有前端都学 Java,安装后端的开发环境,写 VM。 Node.js 就能很好的解决这个问题,我们无需学习一门新的语言,就能做到以前开发帮我们做的 事情,一切都显得那么自然。
- 8.多加一层,性能怎么样? 分层就涉及每层之间的通讯,肯定会有一定的性能损耗。但是合理的分层能让职责清晰、也方便 协作,会大大提高开发效率。分层带来的损失,一定能在其他方面的收益弥补回来。 另外,一旦决定分层,我们可以通过优化通讯方式、通讯协议,尽可能把损耗降到最低。
- 9.前端的工作量是否增加了? 相对于只切页面/做 demo,肯定是增加了一点,但是当前模式下有联调、沟通环节,这个过程非常花时 间,也容易出 bug,还很难维护。所以,虽然工作量会增加一点,但是总体开发效率会提升很多。 另外,测试成本可以节省很多。以前开发的接口都是针对表现层的,很难写测试用例。如果做了前后端 分离,甚至测试都可以分开,一拨人专门测试接口,一拨人专注测试 UI(这部分工作甚至可以用工具代 替)。
- 10.增加 Node.js 层带来的风险怎么控制? 随着 Node.js 大规模使用,系统/运维/安全部门的同学也一定会加入到基础建设中,他们会帮 助我们去完善各个环节可能出现的问题,保障系的稳定性。
- 11.Node.js 什么都能做,为什么还要 Java? 我们的初衷是做前后端分离,如果考虑这个问题就有点违背我们的初衷了。即使用 Node.js 替代 Java,我们也没办法保证不出现今天遇到的种种问题,比如职责不清。我们 的目的是分层开发,专业的人,专注做专业的事。基于 Java 的基础架构已经非常强大而 且稳定,而且更适合做现在架构的事情。
- 12.能力越大,责任越大
- 13.• 为什么要前后分离 • 分离的优势与劣势 • 实践中的思考 • 当前的分离实践
- 14.浏览器端渲染的好处 • 减小服务器的压力 • 方便联调 • 渲染模板有更多可选择性 • 发布更加方便
- 15.浏览器端渲染的坏处 • 首次进入会有白屏等待渲染的时间,不利于用户体验 • 重要内容都在前端组装,不利于 SEO • 前端 Route 与服务器端 Route 不匹配 • 渲染模板定位难
- 16.路由共享 服务器 路由 浏览器
- 17.模板共享 服务器 模板 浏览器
- 18.• 为什么要前后分离 • 分离的优势与劣势 • 实践中的思考 • 当前的分离实践
- 19.
- 20.
- 21.
- 22.服务端 Express-router Handlebars.js Request.js 浏览器 Page.js Handlebars.js Browser-request.js
- 23.模块化
- 24.模块化 AMD CMD
- 25.模块化
- 26.Gulp脚本
- 27.i18n
- 28.URL
- 29.Cookie
- 30.HTTPS
- 31.功能拆分 前后渲染 功能 后端渲染 展示 业务 SEO 体验 速度
- 32.架构的后续 人员变动 引入混乱 代码质量 统计代码 业务变动 …
- 33.持续演进 去IE7/8支持 引入Vue.js 安全增强 使用ES6/7
- 34.• 为什么要前后分离 • 分离的优势与劣势 • 实践中的思考 • 当前的分离实践
- 35.Vue Angular React
- 36.
- 37.
- 38.以前 Express-routeróPage.js Handlebars.js Request.jsóBrowser-request.js 现在 React-Router JSX Axios
- 39.Server Slide Rendering
- 40.架构精细化 通过静态编译减少框架运行时的代码量
- 41.
- 42.
- 43.
- 44.