前端经过几年的发展,已经普遍进入了技术的深水区。单纯的网页开发已经难以满足企业的需求,Node逐渐成为一门硬性技能。但是很多同学在业务中并没有用过Node,不知道用Node的好处,也没有办法让老板信服。在看很多技术文章的时候,大家都提到了“中间层”。在很多大型企业中,Node确实承担了“中间层”的角色。那么,“中间层”为什么会广泛使用Node呢?要回答这个问题,首先要说明什么是中间层。通常我们将Web域分为client和server,即前端和后端。这里的后端包括网关、静态资源、接口、缓存、数据库等。至于中间层,就是从后端抽离出另外一层,在术语上处理与客户端联系更紧密的部分页面渲染(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了。
