经过这几年的发展, 前端普遍进入了技术深水区, 只会 web 页面开发已经难以满足企业需求, Node 逐渐成为了刚性技能. 但是很多同学还没有在业务上使用过 Node, 也不知道使用 Node 会带来哪些好处, 更加没有办法说服老板.
在翻看很多技术文章时, 大家都提到 "中间层", 在很多大型企业中, Node 确实承担了 "中间层" 的角色, 那么, Node 为什么被广泛的应用在 "中间层" 呢?
要回答这个问题, 先来陈述下什么是中间层.
通常我们把 Web 领域分为客户端和服务端, 也就是前端和后端, 这里的后端就包含了网关, 静态资源, 接口, 缓存, 数据库等. 而中间层呢, 就是在后端这里再抽离一层出来, 在业务上处理和客户端衔接更紧密的部分, 比如页面渲染 (SSR), 数据聚合, 接口转发等等.
以 SSR 来说, 在服务端将页面渲染好, 可以加快用户的首屏加载速度, 避免请求时白屏, 还有利于网站做 SEO, 他的好处是比较好理解的. 那么对于数据的聚合, 接口转发来说, 这样做有什么意义呢?
这里从以下几个角度分析
01 业务驱动
Node 有个突出的优势, 他的开发者可以是前端. 前端直接和产品交互对接, 对于页面所需要的数据有更好的理解.
每个页面要用到哪些接口, 每个接口要用到哪些字段前端是最清楚的, 再加上实际业务开发中, 前端页面需求经常会发生变化, 需要修改字段或者数据结构, 所以对接页面的这部分接口由前端直接开发非常合适, 可以显著的减少沟通成本.
02 架构需要
面向用户的接口由 Node 中间层负责以后, 真正的服务端可以专注于提供基于领域模型的对内接口, 做微服务.
比如可以基于 Goods 模型, 提供所有商品相关的接口, 基于 Users 模型, 提供所有用户相关, 当一个接口需要商品 + 用户信息时, 由 Node 分别查询组装. 从整体业务代码维护角度来说, 变得更容易, 不会因为业务发展使得每个接口都异常繁杂.
03 性能满足
如果仅仅是架构层面的需求, 需要有一个中间层来沉淀业务, 那用 Java,PHP 也可以做到, 为什么说 Node 更适合做呢?
因为 Node 天生异步!
众所周知, JS 是一门单线程语言, 所以 Node 在实现的时候, 需要借助 libuv 来实现异步.
如图所示, libuv 为 Node 提供了线程池, 事件池, 异步 I/O 等能力.
正是因为其中网络 I/O 的异步能力, 可以让 Node 做接口聚合时, 能够更高效的异步并发处理.
04 成本较低
Node 使用 JS 开发, 只需要学习简单的 API, 前端开发者就可以无障碍使用, 学习成本很低.
而且, Node 具有活跃的社区和丰富的模块池, 拥有很多现成的功能实现, 框架方面, 也有成熟的 koa,express 等基本框架和 egg 等二次封装框架, 可根据需求选择上手也比较方便.
有了以上几点原因, 实实在在的好处, 相信各位同学已经有充足理由可以说服老板让你使用 Node 啦.
如果觉得文章对您有帮助, 请动动手指点赞加关注我哟!
来源: http://www.jianshu.com/p/78a12ead713b