Node.js究竟是什麽?
阿新 • • 發佈:2017-09-05
ibm 允許 ogr when 端口 put 人員 receives 驅動 來源:https://www.ibm.com/developerworks/cn/opensource/os-nodejs/index.html?ca=drs#ibm-pcon
Node 旨在解決什麽問題?
支持數萬個並發連接,解決大量用戶訪問、高並發問題
Node 肯定不是什麽?
Node 是一個服務器程序。但是,基礎 Node 產品肯定不 像 Apache 或 Tomcat。本質上,那些服務器 “安裝就緒型” 服務器產品,支持立即部署應用程序。通過這些產品,您可以在一分鐘內啟動並運行一個服務器。Node 肯定不是這種產品。Apache 能通過添加一個 PHP 模塊來允許開發人員創建動態 Web 頁,添加一個 SSL 模塊來實現安全連接,與此類似,Node 也有模塊概念,允許向 Node 內核添加模塊。實際上,可供選擇的用於 Node 的模塊有數百個之多,社區在創建、發布和更新模塊方面非常活躍,一天甚至可以處理數十個模塊。
Node如何工作?
Node 實際上會使用 Google 編寫的 V8 JavaScript 引擎,並將其重建為可在服務器上使用。
事件驅動編程模型
清單 1. 客戶端上使用 jQuery 的事件驅動編程
示例 Node 應用程序
創建一個非常簡單的 Web 應用程序,一個為實現最快速度而構建的應用程序。應用程序的具體要求:創建一個隨機數字生成器 RESTful API。這個應用程序應該接受一個輸入:一個名為 “number” 的參數。然後,應用程序返回一個介於 0 和該參數之間的隨機數字,並將生成的數字返回給調用者。由於希望該應用程序成為一個廣泛流行的應用程序,因此它應該能處理 50,000 個並發用戶。我們來看看以下代碼:
清單 2. Node 隨機數字生成器
1 // jQuery code on the client-side showing how Event-Driven programming works 2 3 // When a button is pressed, an Event occurs - deal with it 4 // directly right here in an anonymous function, where all theJavaScript 是一種很棒的事件驅動編程語言,因為它允許使用匿名函數和閉包,更重要的是,任何寫過代碼的人都熟悉它的語法。事件發生時調用的回調函數可以在捕獲事件處進行編寫。這樣可以使代碼容易編寫和維護,沒有復雜的面向對象框架,沒有接口,沒有過度設計的可能性。只需監聽事件,編寫一個回調函數,其他事情都可以交給系統處理!5 // necessary variables are present and can be referenced directly 6 $("#myButton").click(function(){ 7 if ($("#myTextField").val() != $(this).val()) 8 alert("Field must match button text"); 9 });
1 // these modules need to be imported in order to use them. 2 // Node has several modules. They are like any #include 3 // or import statement in other languages 4 var http = require("http"); 5 var url = require("url"); 6 7 // The most important line in any Node file. This function 8 // does the actual process of creating the server. Technically, 9 // Node tells the underlying operating system that whenever a 10 // connection is made, this particular callback function should be 11 // executed. Since we‘re creating a web service with REST API, 12 // we want an HTTP server, which requires the http variable 13 // we created in the lines above. 14 // Finally, you can see that the callback method receives a ‘request‘ 15 // and ‘response‘ object automatically. This should be familiar 16 // to any PHP or Java programmer. 17 http.createServer(function(request, response) { 18 19 // The response needs to handle all the headers, and the return codes 20 // These types of things are handled automatically in server programs 21 // like Apache and Tomcat, but Node requires everything to be done yourself 22 response.writeHead(200, {"Content-Type": "text/plain"}); 23 24 // Here is some unique-looking code. This is how Node retrives 25 // parameters passed in from client requests. The url module 26 // handles all these functions. The parse function 27 // deconstructs the URL, and places the query key-values in the 28 // query object. We can find the value for the "number" key 29 // by referencing it directly - the beauty of JavaScript. 30 var params = url.parse(request.url, true).query; 31 var input = params.number; 32 33 // These are the generic JavaScript methods that will create 34 // our random number that gets passed back to the caller 35 var numInput = new Number(input); 36 var numOutput = new Number(Math.random() * numInput).toFixed(0); 37 38 // Write the random number to response 39 response.write(numOutput); 40 41 // Node requires us to explicitly end this connection. This is because 42 // Node allows you to keep a connection open and pass data back and forth, 43 // though that advanced topic isn‘t discussed in this article. 44 response.end(); 45 46 // When we create the server, we have to explicitly connect the HTTP server to 47 // a port. Standard HTTP port is 80, so we‘ll connect it to that one. 48 }).listen(80); 49 50 // Output a String to the console once the server starts up, letting us know everything 51 // starts up correctly 52 console.log("Random Number Generator Running...");啟動應用程序 將上面的代碼放入一個名為 “random.js” 的文件中。現在,要啟動這個應用程序並運行它(以便創建 HTTP 服務器並監聽端口 80 上的連接),只需在您的命令提示中輸入以下命令:% node random.js。下面是服務器已經啟動並運行時看起來的樣子: [email protected]:/home/moila/ws/mike# node random.js Random Number Generator Running... 下面是我練習時的代碼及運行效果: 訪問應用程序 應用程序已經啟動並運行。Node 正在監聽所有連接,我們來測試一下。由於我們創建了一個簡單的 RESTful API,所以可以使用 Web 瀏覽器來訪問這個應用程序。鍵入以下地址(確保您已完成了上面的步驟):http://localhost/?number=27。 您的瀏覽器窗口將更改到一個介於 0 到 27 之間的隨機數字。單擊瀏覽器上的 “重新載入” 按鈕,您會得到另一個隨機數字。就是這樣,這就是您的第一個 Node 應用程序! 訪問效果:
Node.js究竟是什麽?