NodeJs(一)我對NodeJs的認知

歡迎來到我的NodeJs專題系列,更多精彩內容持續更新中,敬請關注!

NodeJs(一)我對NodeJs的認知

寫在前面

前面我已經分享了100+篇前端相關的技術文章,都是自己平時工作中遇到的一些問題的問題,還有是我平時自學的內容。但是那些前端文章99%都是要基於瀏覽器。其實在大前端時代,還有一個很重要的組成部分,那就是NodeJs了。接下來的專題,我們就來分享一下NodeJs的基本和高級應用吧

本章,我將從以下幾個方面來分享一下NodeJs的相關知識點。

  • NodeJs是什麼?
  • NodeJs有什麼優勢和不足
  • NodeJs有哪些應用

NodeJs是什麼?

前端開發在2009年之前,應該說都是基於瀏覽器的,也就是說,前端程序員能控制的就只有瀏覽器了。

比如我們想操作一下我們本地的文件,連接一下數據庫等,基於安全機制,這些都是不被允許的。

這也就導致了前端一直是在程序員的鄙視鏈的最底端了。好像那時候,ajax好像是前端程序員唯一的“遮羞布”了。

然後,我們依然脫離不了後端的支持。

直到2009年,NodeJs橫空出世。徹底巔覆了前端的技術分支,NodeJs也可以像Java,php等後端語言一樣進行服務端的開發了。

NodeJs(一)我對NodeJs的認知

根據官網的介紹,NodeJs是基於Google的chrome V8引擎開發的。

先來簡單說一下,chrome v8是啥?它是google公司基於C++編寫的,它可以用一解析JavaScript,v8的性能是非常高效的。

NodeJs並不是一門新的語言,它是一個js的一個運行環境,這個運行環境可以理解就是可以開發服務器端的程序。它的語法和普通的JS沒什麼區別。因此對於前端程序員來說,是非常友好的。

Nodejs的優勢和不足

NodeJs的最大特點就是它 基於事件驅動異步非阻塞I/O

基於事件驅動是什麼意思呢?事件這個概念在我們傳統的dom中應該很常見了吧,舉個例子

比如我們要讀取一個本地大文件。我們只需要傳入一個文件路徑,然後加上一個回調函數,當文件讀取完成後,將會觸發一個成功的回調的函數,從而我們可以繼續處理後面的邏輯。而讀取文件的過程本身就是一個耗時的過程。異步將不再阻塞後面的程序繼續運行

如果這個過程是一個同步的過程,那個後面的操作將要等到文件讀取完成後再去執行了,這就造成了阻塞。像java php,他們都是同步的操作。

所以Nodejs的優勢就已經體現出來了,對於高併發的網站,用NodeJs來處理用戶的請求將比java和php都要高效。

NodeJs(一)我對NodeJs的認知

哇,感覺NodeJs太牛了,那它有缺點嗎?能把java,php它們幹趴下嗎?答案也很明確:不能。

既然NodeJs處理併發的能力要遠遠優於java,php,那為什麼現在很多網站或者App的後臺還是基於Java呢?

前段時間,面試的過程一般都會問面試官他們公司的後端用的是什麼語言,答案都是java,只有一家是python。

NodeJs有一個缺點(痛點),那就是NodeJs計算能力遠遠不如java這樣的編譯型語言。

NodeJs的應用

NodeJs的地位好像有點尷尬,有高併發,但是後臺一般又不用它。一般來說,一個大型的網站的後臺可以使用多種語言,會結合每個語言的優勢發揮各自的優勢。

比如現在很多網站,都是用NodeJs來處理高併發,然後用Java這種穩定型的去後端的服務。Node就是我們常說的中間層了。

那。。除了作網站的中間層,還能做什麼呢?大家不要忘了,自從NodeJs出來了,前端開發越來越複雜,也在慢慢的走向工程化了。

這其中最流行的打包工具就屬webpack了,webpack本身,基於webpack的插件,loader都是基於Nodejs,如果沒有NodeJs作為底層服務,這些將不復存在了。

當然,基於Nodejs的應用遠遠不止這些。更多Nodejs的知識點,後續將為大家一一分享。

總結:

  • 我們可以通過JS語法可以實現java實現的任何功能。他們各自有自己的優勢。沒有誰優於誰。
  • Nodejs為前端開疆拓土。為前端注入了新的血液。
  • NodeJs在前端工程化的應用。

這裡是【暢哥聊技術】的《NodeJs》專題系列。更多內容持續更新中。

下期我們接著聊,未完待續。。


分享到:


相關文章: