想用Node.js,老板不同意?
經過這幾年的發展,前端普遍進入了技術深水區,只會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啦。