nodeJS( 一)什麼是node

1.官網上對node的定義php

Node.js 是一個基於 Chrome V8 引擎的 JavaScript 運行環境。
Node.js 使用了一個事件驅動非阻塞式 I/O 的模型,使其輕量又高效。
Node.js 的包管理器 npmnode

2.爲何使用nodeweb

  • Node使用的是爲Google Chrome提供動力的V8虛擬機,它省調了中間環節,執行的不是字節碼,用的也不是解釋器,而是直接編譯成了本地機器碼
  • 開發人員用一種語言就能編寫整個程序,這能夠減小開發客戶端和服務端時所需的語言切換。這樣代碼能夠在客戶端和服務端中共享,好比在表單校驗或遊戲邏輯中使用一樣一段代碼。
  • 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 數據密集型實時程序。

相關文章
相關標籤/搜索