1.官網上對node的定義php
Node.js 是一個基於 Chrome V8 引擎的 JavaScript 運行環境。
Node.js 使用了一個事件驅動、非阻塞式 I/O 的模型,使其輕量又高效。
Node.js 的包管理器 npmnode
2.爲何使用nodeweb
Node用的虛擬機(V8)會緊跟ECMAScript標準。在Node中若是想用新的JavaScript語言特性,不用等到全部瀏覽器都支持。npm
3.一個簡單的http服務器json
var http = require('http')
http.createServer( (req,res) => {
res.writeHead(200, {'Content-Type: 'text/plain'}); res.write('hello world'); res.end(); }).listen(8000)
4.數據流
Node在數據流和數據流動上很強大,數據流中的數據是分佈在時間上的。經過將數據一塊一塊的傳送,開發人員能夠每收到一塊數據就開始處理,而不是等全部數據都全了在作處理。瀏覽器
var fs= require('fs');
var steam = fs.createStream('./resource.json', (chunk) => { console.log(chunk) }) steam.on('end', () => console.log('finished'))
上面的代碼中,只要有新的數據塊準備好,就會激發data事件。當全部數據塊都加載完以後,會激發一個end事件。因爲數據類型不一樣,數據塊的大小可能會發生變化。對於讀取流的底層訪問,程序就能夠邊讀取邊處理,這要比全部數據都緩存到內存中在處理效率高。緩存
node中也有可寫數據流,能夠往裏寫數據塊,當Http服務器上有請求過來時,對齊進行響應的res對象就是可寫數據流的一種。服務器
可讀和可寫數據流能夠鏈接起來造成管道,這是一種高效的數據處理方式,只要有數據塊準備好就能夠處理。不用等着讀取完整個資源在把它寫出去。svg
var http = require('http')
var fs = require('fs')
http.createServer( (req, res) => { res.writeHead(200, {'Content-Type': 'image/png'}) fs.createSteam('./iamge.png').pipe(res) }).listen(3000)
在上面的這行代碼中,數據從文件中讀進來(fs.createReadSteam),而後數據隨着進來就被送到(.pipe)客戶端(res),當數據流動時,事件輪詢還能處理其餘事件。ui
5.DIRT程序 data-intensive real-time 數據密集型實時程序。