經過這幾年的發展,前端普遍進入了技術深水區,只會Web頁面開發已經難以滿足企業需求,Node逐漸成為了剛性技能。下面將從4個角度分析為什麼一定要用Node?
經過這幾年的發展,前端普遍進入了技術深水區,只會Web頁面開發已經難以滿足企業需求,Node逐漸成為了剛性技能。下面將從4個角度分析為什麼一定要用Node?
先了解什麼是中間層
在翻看很多技術文章時,大家都提到“中間層”,在很多大型企業中,Node確實承擔了“中間層”的角色,那麼,Node為什麼被廣泛的應用在“中間層”呢?
要回答這個問題,先來陳述下什麼是中間層。
通常我們把Web領域分為客戶端和服務端,也就是前端和後端,這裡的後端就包含了網關,靜態資源,接口,緩存,數據庫等。而中間層呢,就是在後端這裡再抽離一層出來,在業務上處理和客戶端銜接更緊密的部分,比如頁面渲染(SSR),數據聚合,接口轉發等等。
以SSR來說,在服務端將頁面渲染好,可以加快用戶的首屏加載速度,避免請求時白屏,還有利於網站做SEO,他的好處是比較好理解的。那麼對於數據的聚合,接口轉發來說,這樣做有什麼意義呢?
用Node的4點意義
一、業務驅動
Node有個突出的優勢,他的開發者可以是前端。
前端對於頁面所需要的數據有更好的理解,每個頁面要用到哪些接口,每個接口要用到哪些字段前端是最清楚的。再加上實際業務開發中,前端頁面需求經常會發生變化,需要修改字段或者數據結構,所以對接頁面的這部分接口由前端直接開發非常合適,可以顯著的減少溝通成本。
二、架構需要
面向用戶的接口由Node中間層負責以後,真正的服務端可以專注於提供基於領域模型的對內接口,做微服務。
比如可以基於Goods模型,提供所有商品相關的接口,基於Users模型,提供所有用戶相關,當一個接口需要商品+用戶信息時,由Node分別查詢組裝。從整體業務代碼維護角度來說,變得更容易,不會因為業務發展使得每個接口都異常繁雜。
三、性能滿足
如果僅僅是架構層面的需求,需要有一箇中間層來沉澱業務,那用Java,PHP也可以做到,為什麼說Node更適合做呢?
因為Node天生異步!
眾所周知,js是一門單線程語言,所以Node在實現的時候,需要藉助libuv來實現異步。
經過這幾年的發展,前端普遍進入了技術深水區,只會Web頁面開發已經難以滿足企業需求,Node逐漸成為了剛性技能。下面將從4個角度分析為什麼一定要用Node?
先了解什麼是中間層
在翻看很多技術文章時,大家都提到“中間層”,在很多大型企業中,Node確實承擔了“中間層”的角色,那麼,Node為什麼被廣泛的應用在“中間層”呢?
要回答這個問題,先來陳述下什麼是中間層。
通常我們把Web領域分為客戶端和服務端,也就是前端和後端,這裡的後端就包含了網關,靜態資源,接口,緩存,數據庫等。而中間層呢,就是在後端這裡再抽離一層出來,在業務上處理和客戶端銜接更緊密的部分,比如頁面渲染(SSR),數據聚合,接口轉發等等。
以SSR來說,在服務端將頁面渲染好,可以加快用戶的首屏加載速度,避免請求時白屏,還有利於網站做SEO,他的好處是比較好理解的。那麼對於數據的聚合,接口轉發來說,這樣做有什麼意義呢?
用Node的4點意義
一、業務驅動
Node有個突出的優勢,他的開發者可以是前端。
前端對於頁面所需要的數據有更好的理解,每個頁面要用到哪些接口,每個接口要用到哪些字段前端是最清楚的。再加上實際業務開發中,前端頁面需求經常會發生變化,需要修改字段或者數據結構,所以對接頁面的這部分接口由前端直接開發非常合適,可以顯著的減少溝通成本。
二、架構需要
面向用戶的接口由Node中間層負責以後,真正的服務端可以專注於提供基於領域模型的對內接口,做微服務。
比如可以基於Goods模型,提供所有商品相關的接口,基於Users模型,提供所有用戶相關,當一個接口需要商品+用戶信息時,由Node分別查詢組裝。從整體業務代碼維護角度來說,變得更容易,不會因為業務發展使得每個接口都異常繁雜。
三、性能滿足
如果僅僅是架構層面的需求,需要有一箇中間層來沉澱業務,那用Java,PHP也可以做到,為什麼說Node更適合做呢?
因為Node天生異步!
眾所周知,js是一門單線程語言,所以Node在實現的時候,需要藉助libuv來實現異步。
經過這幾年的發展,前端普遍進入了技術深水區,只會Web頁面開發已經難以滿足企業需求,Node逐漸成為了剛性技能。下面將從4個角度分析為什麼一定要用Node?
先了解什麼是中間層
在翻看很多技術文章時,大家都提到“中間層”,在很多大型企業中,Node確實承擔了“中間層”的角色,那麼,Node為什麼被廣泛的應用在“中間層”呢?
要回答這個問題,先來陳述下什麼是中間層。
通常我們把Web領域分為客戶端和服務端,也就是前端和後端,這裡的後端就包含了網關,靜態資源,接口,緩存,數據庫等。而中間層呢,就是在後端這裡再抽離一層出來,在業務上處理和客戶端銜接更緊密的部分,比如頁面渲染(SSR),數據聚合,接口轉發等等。
以SSR來說,在服務端將頁面渲染好,可以加快用戶的首屏加載速度,避免請求時白屏,還有利於網站做SEO,他的好處是比較好理解的。那麼對於數據的聚合,接口轉發來說,這樣做有什麼意義呢?
用Node的4點意義
一、業務驅動
Node有個突出的優勢,他的開發者可以是前端。
前端對於頁面所需要的數據有更好的理解,每個頁面要用到哪些接口,每個接口要用到哪些字段前端是最清楚的。再加上實際業務開發中,前端頁面需求經常會發生變化,需要修改字段或者數據結構,所以對接頁面的這部分接口由前端直接開發非常合適,可以顯著的減少溝通成本。
二、架構需要
面向用戶的接口由Node中間層負責以後,真正的服務端可以專注於提供基於領域模型的對內接口,做微服務。
比如可以基於Goods模型,提供所有商品相關的接口,基於Users模型,提供所有用戶相關,當一個接口需要商品+用戶信息時,由Node分別查詢組裝。從整體業務代碼維護角度來說,變得更容易,不會因為業務發展使得每個接口都異常繁雜。
三、性能滿足
如果僅僅是架構層面的需求,需要有一箇中間層來沉澱業務,那用Java,PHP也可以做到,為什麼說Node更適合做呢?
因為Node天生異步!
眾所周知,js是一門單線程語言,所以Node在實現的時候,需要藉助libuv來實現異步。
如圖所示,libuv為Node提供了線程池,事件池,異步I/O等能力。正是因為其中網絡I/O的異步能力,可以讓Node做接口聚合時,能夠更高效的異步併發處理。
四、成本較低
Node使用js開發,只需要學習簡單的api,前端開發者就可以無障礙使用,學習成本很低。
而且,Node具有活躍的社區和豐富的模塊池,擁有很多現成的功能實現,框架方面,也有成熟的koa,express等基本框架和egg等二次封裝框架,可根據需求選擇上手也比較方便。
總結
總結起來,node對於性能優化方面還是有不錯的效果的,雖然在不能純粹的作為後端語言來使用,但作為前端服務層或者中間層還是綽綽有餘的,大夥可以自己斟酌。