其實不是說一定要學習node,而是為了職場更好的發展,尤其是為了學習更高階的程式思維,學習node很有必要。
以下是對學習node必要性的具體闡述【推薦:node.js影片教學】
##1.node.js最根本的能力是讓js能夠脫離瀏覽器運行,學好node,可以讓自己不再是一個「純前端」2.學習nodejs是進行前端工程化的基礎(NodeJS Stream)
3.學好node ,可以寫服務端API,實作獨立開發專案
4.作為中間層(引申問題:什麼是中間層?)
- 接收客戶端請求
- #渲染HTML頁面
- Bigpipe,Comet,Socket
- 合併介面請求
- 路由自訂
- 資料快取
#現在為什麼說很多時候前端也需要寫自己的api?
1.經典的雙層結構:前端服務端2.三層結構:前端後端服務端(現在的中大型專案所採用的結構)
三層結構的服務端只負責操作資料庫,管理資料
,把資料回給後端,基本上就是純粹的數據,不包含資料業務
後端就是所謂的中間層,如果前端來開發,那麼優先選擇nodejs,因為對於前端來說學習成本最低。
CTO往往是由服務端工程師擔任
理由:
1.需要設計整個公司的技術架構2.需要從全局考慮問題
3.需要掌控公司最重要的資產:數據(誰掌握數據,誰才有話語權)
從技術上,運用自己的能力獨立完成一個專案、產品,是一件很有成就感的事。
NodeJs的優缺點及適用場景
NodeJs的兩大特點:事件驅動,非阻塞I/O所以NodeJs的最大的兩個優點
1.處理高並發,相比較於其他後端語言,每個連接發射(emit)一個在NodeJS引擎進程中運行的事(Event),放進事件隊列當中,而不是為每個連接生成一個新的OS線程(並為其分配一些配套內存)
2.I/O密集型應用
解決方案:分解大型運算任務為多個小任務,使得運算能夠適時釋放,不阻塞I/O呼叫的發起;
:
- RESTful API
- 這是NodeJS最理想的應用場景,可以處理數萬個連接,本身沒有太多的邏輯,只需要請求API,組織資料傳回即可。它本質上只是從某個資料庫中尋找一些值並將它們組成一個回應。由於回應是少量文本,入站請求也是少量的文本,因此流量不高,一台機器甚至可以處理最繁忙的公司的API需求。
- 目前MVC的架構,在某種意義上來說,Web開發有兩個UI層,一個是在瀏覽器裡面我們最終看到的,另一個在server端,負責產生和拼接頁面。
- 大量Ajax請求的應用程式
例如個人化應用,每個使用者看到的頁面都不一樣,快取失效,需要在頁面載入的時候發起Ajax請求,NodeJS能回應大量的並發請求 ##總而言之,NodeJS適合運用在高並發、I/O密集、少量業務邏輯的場景