Node.JS 是一个 JavaScript 运行环境. Node.JS 使用事件驱动, 非阻塞 I/O 模型而得以轻量和高效, 非常适合在分布式设备上运行数据密集型的实时应用.
Node.JS 是单进程, 单线程运行机制, 通过事件轮询 (event loop) 来实现并发操作, 而且性能很好.
后端出于性能和别的原因, 提供的接口所返回的数据格式也许不太适合前端直接使用. 例前端所需的排序功能, 筛选功能, 以及到了视图层的页面展现 , 也许都需要对接口 所提供的 数据进行二次处理 . 这些处理虽可以放在前端来进行, 但也许数据量一大便会浪费浏览器性能. 因而现今, 增加 node 端便是一种良好的解决方案.
用 node 做中间层的好处:
跨系统, 跨终端均可重用页面数据校验, 逻辑代码, 无需因为新系统, 终端的接入而重写校验;
处理数据逻辑, 解放了前端既要做页面渲染又要写复杂的逻辑, 使得页面开发人员专注于页面渲染, 不仅使得分工更为明确, 项目协作效率更高, 更重要的是快速响应页面使得页面加载更快, 用户体验更好, 避免了浏览器长时间显示空白页面的不友好体验;
node 中间层, 可以针对接口或者路由做响应的限流.
缓存其实是更靠近前端的需求, 用户的动作触发数据的更新, node 中间层可以直接处理一部分缓存需求.
node 中间层的解决方案更灵活, 比如 SSR, 模板直出, 利用一些 JS 库做预渲染等等.
相比其他服务端语言, node 中间层的日志记录, 能更方便快捷的定位问题(是在浏览器端还是服务端).
来源: http://www.css88.com/qa/node-js/12045.html