1.Nodejs是什麼?
Node.js不是一種獨立的語言,與php即是語言也是平臺不同,也不是javascript的框架更不是瀏覽器的庫,不能與Extjs相提並論。Node.js是一個讓javascript運行在服務端的開發平臺。
2.Node.js能做什麼?
1、javascript是爲客戶端而產生的,Node.js是爲服務端(網絡)而生的。
2、適合具有複雜邏輯的網站
3、基於社交網絡的大Web的應用
4、Web socket服務器
基於TCP的雙向的,全雙工的數據連接
雙向:客戶端、服務器端
全雙工:數據的發送與接收,兩者同步進行
建立socket應用
服務器必須支持web socket
nodejs
5、TCP/UDP套接字應用程序
6、命令行工具
7、交互式終端程序
3、Node.js最大的特性就是採用異步式I/O與事件驅動的框架設計
傳統的框架是多線程模型,也就是爲每個業務邏輯提供一個系統線程,通過系統線程切換來彌補同步式I/O調用時的時間開銷。
Node.js使用的單線程模型,在執行的過程中會維護一個事件隊列,程序在執行時在進入時間循環等待下一個事件到來
普通:
<span style="font-size:14px;">res=db.query('select * from user');
res.output();</span>
Node.js:
<span style="font-size:14px;">res = dbquery('select * from user',function(res){
res.output();
});</span>
程序會自動往下執行
4.瀏覽器引擎革命
Google Chrome引擎是V8(最快的引擎)。Nodejs的引擎引用的就是V8,所以,爲什麼ExtJs在Chrome如此的快,就以爲如此。
5.
node -v 版本
node -e (即eval ) 把字符串直接當爲js代碼執行
node 編譯模式(直接編譯js代碼)
3.建立HTTP服務器(這裏是最簡單的例子)
<span style="font-size:14px;">var http = require('http'); //建立http服務
var serv = http.createServer(function(req, res) { //調用createServer方法
console.log('有人進來了');
/*res.writeHeader(200, {
'content-type' : 'text/html;charset="utf-8"'
});*/
res.writeHeader(404, {
'content-type' : 'text/html;charset="utf-8"'
});
//res.write('這是正文');
res.write('你所訪問的資源不存在');
res.end();
}).listen(8888);
console.log('服務器開啓成功');</span>
4.好用的工具supervisor
npm install supervisor -g (npm安裝包自動安裝,不多說)
最後小結一下同步I/O與異步I/O的區別:
同步式I/O:異步式I/O:
利用多線程提供吞吐量 單線程即可實現高吞吐量
通過事件片分割和線程調度利用多核CPU通過功能劃分利用多核
需要有操作系統調度多線程使用多核CPU可以將單線程綁定到單核CPU
難以充分利用CPU資源 可以充分利用CPU資源
內存軌跡大,數據局部性弱 內存軌跡小,數據局部性強
符合線性的編程思維 不符合傳統編程思維
以上爲個人觀點,如有不對,歡迎指出!
純屬手打,轉載請標明出處!