在使用Node.js以前,你須要安裝它。 安裝過程很是簡單,若是你使用windows或者OS x,nodejs.org提供了不一樣操做系統下的安裝包,對於Linux來講,你可使用任何的打包工具。打開你的終端,輸入: html
sudo apt-get update sudo apt-get install node
或者: node
sudo aptitude update sudo aptitude install node
Node.js位於sid repositories,你能夠添加它們到你的列表裏: mysql
sudo echo deb http://ftp.us.debian.org/debian/ sid main > /etc/apt/sources.list.d/sid.list
注意在舊系統中安裝sid包可能會破壞你的系統。因此小心,安裝完node後請移除/etc/apt/sources.list.d/sid.list sql
Node.js擁有一個包管理器,叫作Node Package Manager(NPM)。自動隨node.js安裝,你可使用NPM來安裝模塊。執行以下語句: 數據庫
npm install module_name
無論你使用何種OS,上面語句會安裝指定的模塊名稱 npm
很天然,咱們第一個Node.js腳本將打印Hello world到控制檯。以下: json
console.log('Hello World, GBin1!');
咱們保存以上腳本爲hello.js。打開終端/命令行,找到hello.js,執行以下: windows
node hello.js
你應該在控制檯看到'hello world, GBin1!'字樣。 瀏覽器
下面咱們開發一個更復雜的應用,當讓也不是那麼複雜。請先看看以下代碼http.js: 服務器
// Include http module. var http = require("http"); // Create the server. Function passed as parameter is called on every request made. // request variable holds all request parameters // response variable allows you to do anything with response sent to the client. http.createServer(function (request, response) { // Attach listener on end event. // This event is called when client sent all data and is waiting for response. request.on("end", function () { // Write headers to the response. // 200 is HTTP status code (this one means success) // Second parameter holds header fields in object // We are sending plain text, so Content-Type should be text/plain response.writeHead(200, { 'Content-Type': 'text/html' }); // Send data and end response. response.end('Welcome to <a href="http://www.gbin1.com">GBin1.com</a>!'); }); // Listen on the 8080 port. }).listen(8080);
代碼其實並不複雜,你能夠看到咱們使用response.write()將數據傳遞到客戶端,固然必須在response.end()以前調用。保存代碼,而後在控制檯執行:
node http.js
打開任何瀏覽器,輸入http://localhost:8080,你能夠看到"Welcome to GBin1.com!"出如今頁面上。
正如前面咱們提到的,咱們須要本身處理Node.js中的任何東西,包括處理參數,其實很是簡單,以下:
// Include http module, var http = require("http"), // And url module, which is very helpful in parsing request parameters. url = require("url"); // Create the server. http.createServer(function (request, response) { // Attach listener on end event. request.on('end', function () { // Parse the request for arguments and store them in _get variable. // This function parses the url from request and returns object representation. var _get = url.parse(request.url, true).query; // Write headers to the response. response.writeHead(200, { 'Content-Type': 'text/plain' }); // Send data and end response. response.end('Here is your data: ' + _get['data']); }); // Listen on the 8080 port. }).listen(8080);
這個代碼使用url模塊的parse()方法,來將請求的URL轉換爲一個對象。返回的對象擁有一個query屬性,能夠用來取得URL參數。保存這段代碼爲get.js而且執行:
node get.js
打開瀏覽器而且輸入地址http://localhost:8080/?data=put_gbstring_here。你將看到效果。
咱們在node.js中使用fs模塊來管理文件。使用fs.readFile()和fs.writeFile()方法來讀取和寫入文件,請看以下代碼:
// Include http module, var http = require("http"), // And mysql module you've just installed. fs = require("fs"); // Create the http server. http.createServer(function (request, response) { // Attach listener on end event. request.on("end", function () { // Read the file. fs.readFile("test.txt", 'utf-8', function (error, data) { // Write headers. response.writeHead(200, { 'Content-Type': 'text/plain' }); // Increment the number obtained from file. data = parseInt(data) + 1; // Write incremented number to file. fs.writeFile('test.txt', data); // End response with some nice message. response.end('This page was refreshed ' + data + ' times!'); }); }); // Listen on the 8080 port. }).listen(8080);
將以上代碼保存爲file.js,而後建立一個test.txt文件到同一個目錄下。
代碼展現如何使用fs.readFile()和fs.writeFile()。每一次服務器收到一個請求,腳本就會自動添加1,而後寫回文件。fs.readFile()方法接受3個參數:文件名稱,編碼,callback方法。
寫入文件,在這個例子中,很是簡單。咱們不須要等待任何結果,雖然你仍舊處理錯誤。fs.writeFile()方法接受文件名稱和數據做爲參數。同時接受第三個和第四個參數(都是可選的)來指定編碼和callback方法。運行腳本:
node files.js
打 開瀏覽器,輸入http://localhost:8080,刷新頁面幾回。看看結果好像有bug,這裏每次加了2。其實這不是一個錯誤。每一次你請求這 個URL的時候,倆個請求被髮送到服務器。第一個請求是瀏覽器自動請求的 favion.ico。固然第二個請求是咱們腳本對應URL(http://localhost:8080)
爲了解決這個問題,咱們修改代碼以下:
// Include http module, var http = require("http"), // And mysql module you've just installed. fs = require("fs"); // Create the http server. http.createServer(function (request, response) { // Attach listener on end event. request.on('end', function () { // Check if user requests / if (request.url == '/') { // Read the file. fs.readFile('test.txt', 'utf-8', function (error, data) { // Write headers. response.writeHead(200, { 'Content-Type': 'text/plain' }); // Increment the number obtained from file. data = parseInt(data) + 1; // Write incremented number to file. fs.writeFile('test.txt', data); // End response with some nice message. response.end('This page was refreshed ' + data + ' times!'); }); } else { // Indicate that requested file was not found. response.writeHead(404); // And end request without sending any data. response.end(); } }); // Listen on the 8080 port. }).listen(8080);
如今看看,結果是否是正確了。
對 於一個正常的服務器端技術,確定須要有機制來處理數據庫操做。爲了在node.js中使用數據庫,咱們須要安裝類庫,這裏咱們使用node-mysql。 完整的名稱是mysql@2.0.0-alpha2(@後面是版本號)。打開你的控制檯,導航到你保存腳本的目錄,執行以下命令:
npm install mysql@2.0.0-alpha2
這將下載和安裝模塊,同時建立node_module目錄到目前目錄中。下面咱們看看如何使用代碼訪問mysql:
// Include http module, var http = require('http'), // And mysql module you've just installed. mysql = require("mysql"); // Create the connection. // Data is default to new mysql installation and should be changed according to your configuration. var connection = mysql.createConnection({ user: "root", password: "", database: "db_name" }); // Create the http server. http.createServer(function (request, response) { // Attach listener on end event. request.on('end', function () { // Query the database. connection.query('SELECT * FROM your_table;', function (error, rows, fields) { response.writeHead(200, { 'Content-Type': 'x-application/json' }); // Send data as JSON string. // Rows variable holds the result of the query. response.end(JSON.stringify(rows)); }); }); // Listen on the 8080 port. }).listen(8080);
查 詢數據庫很是簡單,輸入查詢語句和callback方法。在一個實際的應用中,你應該檢查是否有錯誤!(一旦有錯誤,error參數將不會爲 undefined),而且發送響應代碼基於查詢成功或者失敗,注意咱們設定content-type爲x-application/json,這是正確 的JSON MIME類型。rows參數包含了查詢結果,這裏咱們使用JSON,stringify()方法簡單的將rows中的數據轉換爲JSON結構
保存腳本爲mysql.js,執行:
node mysql.js
在瀏覽器中輸入http://localhost:8080,你能夠看到要求你下載JSON格式數據文件。