node.js是什么東西?
現(xiàn)在流行一種說法叫web全棧工程師,講的是一個web工程師要懂前后端,以及前端的各種牛逼技術(shù),我覺得這個全棧工程師并不是說讓你一個人去干一個團隊的活,而是說你要有足夠的技術(shù)思維以及技術(shù)掌控力,說白了就是你要懂的多,對于整天搞前端,和JavaScript打交道的我們來說,我們不妨來來看一個用JavaScript實現(xiàn)的后端平臺,node.js.
- nodejs是以chrome v8為運行環(huán)境的一個平臺,它不是一門語言,而是一個平臺,
- nodejs致力于是構(gòu)建速度快,穩(wěn)定的網(wǎng)絡(luò)程序更簡單
- 它具有事件驅(qū)動和非阻塞I/O的特色,使之輕量級并且高效率
- 它非常適合在分布式設(shè)備運行數(shù)據(jù)密集型實時應(yīng)用程序
使用chrome v8引擎?
nodejs為什么要使用chrome引擎呢,據(jù)說是當時的創(chuàng)始人在開發(fā)nodejs的時候,想要創(chuàng)造出來一個高性能,異步IO,事件驅(qū)動的語言,因為JavaScript中是單線程執(zhí)行的,所以沒有同步IO,他便選定了JavaScript來作為基礎(chǔ)實現(xiàn)的語言,同時由于谷歌的v8引擎是開源的,而且是運行JavaScript很快的引擎,便很機智的選擇了chrome v8引擎來作為基礎(chǔ)環(huán)境了,
nodejs的作用?
講到這里,我們大概的明白了nodejs是一個平臺,是一個環(huán)境,它是由chrome v8引擎來做底層支持,使用JavaScript來做語言支持,大概意思就是我們之前使用JavaScript運行在瀏覽器端去處理dom,bom操作等等,現(xiàn)在JavaScript運行在服務(wù)器去處理數(shù)據(jù)的增刪改查,接受請求,發(fā)送數(shù)據(jù),查找修改文件,WHAT?這么吊?對的,現(xiàn)在使用JavaScript你就可以去做那些以前你覺得很牛逼的事情.
當我們輸入一個url去訪問網(wǎng)站,服務(wù)器端接受到了這個請求之后,開始去查找請求的文件,然后去執(zhí)行數(shù)據(jù)庫查詢,查詢后將響應(yīng)體返回給瀏覽器,這是一個大致的過程,那么在以前的服務(wù)器中,例如Apache,每一個請求事件它都會去創(chuàng)建一個新的進程去處理這個請求,
之后,我們有了ajax,不再去進行整個頁面的刷新了,而是進行局部的刷新,我們只需要去向服務(wù)器請求我們需要的那一部分數(shù)據(jù)就行了,這是一個巨大的進步.
那我們可以再去設(shè)想一個場景,當我們在看朋友圈時,我么每一個用戶的朋友圈都在實時的更新當中,按照我們以前的做法是給每一個用戶都和數(shù)據(jù)庫端有一個長鏈接(long polling),
所謂的長鏈接,就是我們每個用戶都和服務(wù)器有一個鏈接,由于服務(wù)器不會主動向瀏覽器發(fā)送數(shù)據(jù),當鏈接建立之后,不會立馬斷開,服務(wù)器端會一直在等待,當瀏覽器需要