初識nodejs

 

node.js是什麼東西?

  如今流行一種說法叫web全棧工程師,講的是一個web工程師要懂先後端,以及前端的各類牛逼技術,我以爲這個全棧工程師並非說讓你一我的去幹一個團隊的活,而是說你要有足夠的技術思惟以及技術掌控力,說白了就是你要懂的多,對於成天搞前端,和JavaScript打交道的咱們來講,咱們不妨來來看一個用JavaScript實現的後端平臺,node.js.前端

  • nodejs是以chrome v8爲運行環境的一個平臺,它不是一門語言,而是一個平臺,
  • nodejs致力因而構建速度快,穩定的網絡程序更簡單
  • 它具備事件驅動和非阻塞I/O的特點,使之輕量級而且高效率
  • 它很是適合在分佈式設備運行數據密集型實時應用程序
 

使用chrome v8引擎?


  nodejs爲何要使用chrome引擎呢,聽說是當時的創始人在開發nodejs的時候,想要創造出來一個高性能,異步IO,事件驅動的語言,由於JavaScript中是單線程執行的,因此沒有同步IO,他便選定了JavaScript來做爲基礎實現的語言,同時因爲谷歌的v8引擎是開源的,並且是運行JavaScript很快的引擎,便很機智的選擇了chrome v8引擎來做爲基礎環境了,node

 

nodejs的做用?


  講到這裏,咱們大概的明白了nodejs是一個平臺,是一個環境,它是由chrome v8引擎來作底層支持,使用JavaScript來作語言支持,大概意思就是咱們以前使用JavaScript運行在瀏覽器端去處理dom,bom操做等等,如今JavaScript運行在服務器去處理數據的增刪改查,接受請求,發送數據,查找修改文件,WHAT?這麼吊?對的,如今使用JavaScript你就能夠去作那些之前你以爲很牛逼的事情.web

  當咱們輸入一個url去訪問網站,服務器端接受到了這個請求以後,開始去查找請求的文件,而後去執行數據庫查詢,查詢後將響應體返回給瀏覽器,這是一個大體的過程,那麼在之前的服務器中,例如Apache,每個請求事件它都會去建立一個新的進程去處理這個請求,ajax

  以後,咱們有了ajax,再也不去進行整個頁面的刷新了,而是進行局部的刷新,咱們只須要去向服務器請求咱們須要的那一部分數據就好了,這是一個巨大的進步.chrome

  那咱們能夠再去設想一個場景,當咱們在看朋友圈時,我麼每個用戶的朋友圈都在實時的更新當中,按照咱們之前的作法是給每個用戶都和數據庫端有一個長連接(long polling),數據庫

所謂的長連接,就是咱們每一個用戶都和服務器有一個連接,因爲服務器不會主動向瀏覽器發送數據,當連接創建以後,不會立馬斷開,服務器端會一直在等待,當瀏覽器須要它將更新的數據返回時它纔會發送數據,例如你有一個朋友在微信上給你發了一條消息,這是服務器端就會向你的微信端發送一個消息,當瀏覽器端接受到了消息以後,會將當前連接斷開,可是會再理解創建一個連接.後端

  咱們之前的這種作法的弊端就是服務器開銷太大,一直都有連接佔用着資源,那麼怎麼解決呢?用nodejs就能夠解決,nodejs有着非阻塞IO和事件驅動的特色,這些術語其實並非那麼的複雜,咱們能夠將非阻塞IO想象成一個事件循環,這個事件循環在不停的轉啊轉,有請求進來時,就將他裝進這個事件循環,每個事件都有一個回調,當咱們產生一個請求時,不用等待,而是直接將該進程放進事件循環中,當數據庫有信息返回時再觸發回調函數.每一個請求就像ajax執行時那樣,不須要等待, 
當咱們的服務器請求結果返回了,事件循環就把結果傳回用戶的瀏覽器,接着繼續跑,在這種方式下,咱們的服務器就不會閒着了,(在多線程下有可能一些線程都沒有什麼用)而且從理論上講,同一時刻的數據庫查詢數量,以及用戶的請求數量就沒有限制了,服務器只在用戶那邊有請求的時候才響應,這就是事件驅動.更多的能夠理解爲單核手機模擬四核手機的狀況.瀏覽器

 

總結

  nodejs不是一門新的語言,他就是JavaScript的一個運行環境,JavaScript之前是在瀏覽器端跑,如今有了nodejs就能夠在後端跑,就像汽車本來只能在公路上跑,如今你給他裝了nodejs,它如今能夠在水裏跑了同樣.那麼這麼抽象的說,我本身搞的也暈頭轉向的,對於剛趟入nodejs渾水的我.歡迎你們來一塊兒交流!服務器

相關文章
相關標籤/搜索