Node.js入门经典 读书笔记(3)
本章中我們將講述Node.js的作用
1、設計Node.js的目的
Node.js是構建在Chrome的JavaScript運行時之上的一個平臺,用于簡單構建快速的、可擴展的網絡應用程序。Node.js使用事件驅動的、非阻塞的I/O模型,這讓其既輕量又高效,是運行于不同發布設備上的數據密集型實時應用程序的完美平臺。
并發簡單的可以理解為指的是許多人同時嘗試做同樣的事情。
2、I/O理解操作
I/O是輸入/輸出的簡寫,指的是計算機和人或者數據處理系統之間的通信。可以使用很類似于PHP一樣的語句來進行輸出。即echo。
2.1 處理輸入
? 計算機編程是什么?計算機編程就是編寫解決某一個問題的軟件并且處理圍繞著該問題的可能的各種不可預測性。
2.2 聯網I/O的不可預測性
? 當今的Web應用程序的設計變得越來越復雜。I/O變得更加的碎片化,而且I/O操作也變得更為頻繁。
- 與第三方應用程序編程接口(API)的交互繁重
- 許多不同設備發送與接收數據,包括移動設備、電視和公告板等等
- 巨大數量的客戶同時連接并實時交互
3、不可預測性
?例子:使用Node.js從不同的Web服務器上獲取主頁。
1 var http = require('http'), 2 urls = ['shapeshed.coom', 'www.bbc.co.hk', 'www.baidu.com']; 3 4 function fetchPage (url) { 5 var start = new Date(); 6 http.get({host: url}, function (res) { 7 console.log("Got response from: " + url); 8 console.log("Request took:", new Date() - start, 'ms'); 9 }); 10 } 11 12 for (var i = 0; i < urls.length; i++) { 13 fetchPage (urls[i]); 14 }以上的代碼,在不同次運行的時候會輸出不同的時間,這也就是由于Web服務器響應時間不同導致的。而這些不同也是由于以下原因導致:
在傳統的HTML頁面中使用JavaScript,例如,當用戶單擊頁面超鏈接時,有事件被觸發,而JavaScript代碼并不是對一組用戶可能進行的動作按線性排序列出,然后以此構造代碼;而是圍繞事件來構架。事件可在任何時刻發生,也可發生不止一次。以上所描述的就是事件驅動的編程,因為在程序中要是有事情發生的話那么有個事件必須發生。事件驅動編程是處理不可預測性的極佳方式,因為我們可以識別將要發生的事件,即使我們并不知道事件什么時候會發生。
JavaScript在瀏覽器中極高效地使用了這個模型,允許開發人員創建基于瀏覽器打的富應用程序,這樣的應用程序圍繞著事件和用戶與頁面之間的交互方式編寫。
現代Web應用程序的趨勢:
- 許多不同類型的設備可連接到Web應用程序
- 設備可作為輸入和輸出
- 在一個應用程序內,不同的服務由不同的服務器來完成
- 應用程序與許多第三方數據源的交互很繁重
- 客戶與服務器之間的數據實時雙向流動
而通過以上的比較可以發現,所有的趨勢都指向了并發。Node的事件化的I/O模型讓我們無需擔心互鎖和并發這兩個在多線程異步I/O中常見的問題。Node.js將JavaScript解決不確定性所用的事件驅動方法加入到解決并發程序的可能方法清單中。事件驅動編程并不是新的思想。其他語言同樣實現過,而解決并發問題多的其他方法還包括線程以及使用不同的進程。
?
轉載于:https://www.cnblogs.com/maybe1491/archive/2013/04/29/3051454.html
總結
以上是生活随笔為你收集整理的Node.js入门经典 读书笔记(3)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jenkins配置ant使用方法
- 下一篇: 利用JMeter进行Web测试(简介适合