Node.js作为中间层的前后端分离
现今,许多公司的老项目都存在这样一些问题:
* 前端代码越来越复杂
* 前后端依旧高度耦合
* 无法良好的支持跨终端
解决方案:
* 前端代码越来越复杂,我们希望尽可能地减少工作量,开始使用类似MV*的分层结构,使前端后分离成为必要。
* 前端需要处理更多的工作,希望有权操控View,Router(如:SPA的尝试)
* 各种终端设备的兴起,需要我们把页面适配到更多的地方。
关于MVC的定义:
MVC是一种设计模式,它将应用划分为3个部分:数据(模型)、展现层(视图)和用户交互(控制器)。换句话说,一个事件的发生是这样的过程:
- 用户和应用产生交互。
- 控制器的事件处理器被触发。
- 控制器从模型中请求数据,并将其交给视图。
- 视图将数据呈现给用户。
传统弊端:
性能问题
- 渲染,取值都在客户端进行,有性能的问题
- 需要等待资源到齐才能进行,会有短暂白屏与闪动
- 在移动设备低速网路的体验奇差无比
重用问题
- 模版无法重用,造成维护上的麻烦与不一致
- 逻辑无法重用,前端的校验后端仍须在做一次
- 路由无法重用,前端的路由在后端未必存在
跨终端问题
- 业务太靠前,导致不同端重复实现
- 逻辑太靠前,造成维护上的不易
NodeJS作为中间层的全栈开发方案
有了NodeJS之后,前端可以更加专注于视图层,而让更多的数据逻辑放在Node层处理。
我们使用Node层:
* 转发数据,串接服务
* 路由设计,控制逻辑
* 渲染页面,体验优化
* 中间层带来的性能问题,在异步ajax转成同步渲染过程中得到平衡
* 更多的可能