1. 程式人生 > >Node.js究竟是什麽?

Node.js究竟是什麽?

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 的事件驅動編程
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 the
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 });
JavaScript 是一種很棒的事件驅動編程語言,因為它允許使用匿名函數和閉包,更重要的是,任何寫過代碼的人都熟悉它的語法。事件發生時調用的回調函數可以在捕獲事件處進行編寫。這樣可以使代碼容易編寫和維護,沒有復雜的面向對象框架,沒有接口,沒有過度設計的可能性。只需監聽事件,編寫一個回調函數,其他事情都可以交給系統處理!
示例 Node 應用程序 創建一個非常簡單的 Web 應用程序,一個為實現最快速度而構建的應用程序。應用程序的具體要求:創建一個隨機數字生成器 RESTful API。這個應用程序應該接受一個輸入:一個名為 “number” 的參數。然後,應用程序返回一個介於 0 和該參數之間的隨機數字,並將生成的數字返回給調用者。由於希望該應用程序成為一個廣泛流行的應用程序,因此它應該能處理 50,000 個並發用戶。我們來看看以下代碼: 清單 2. Node 隨機數字生成器
 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究竟是什麽?