Node.js示例:我們將使用Node.js來介紹基礎(chǔ)知識,fs模塊,mysql模塊,http模塊,url模塊,解析json等示例。
以下是我們將在此Node.js教程中介紹的Node.js示例的列表:
Module/Topic | Examples |
Basics |
|
File System |
|
MySQL |
|
URL |
|
JSON |
|
HTTP |
|
以下是一個簡單的Node.js示例,用于將消息打印到控制臺。
console.log("Hi there! This is Node.js!")
Calculator.js
// 返回兩個數(shù)字的加法 exports.add = function (a, b) { return a+b; }; // 返回兩個數(shù)字的差 exports.subtract = function (a, b) { return a-b; }; // 返回兩個數(shù)的乘積 exports.multiply = function (a, b) { return a*b; };
var calculator = require('./calculator'); var a=10, b=5; console.log("Addition : "+calculator.add(a,b)); console.log("Subtraction : "+calculator.subtract(a,b)); console.log("Multiplication : "+calculator.multiply(a,b));
readFileExample.js
// 引入文件fs模塊 var fs = require('fs'); var data ='Learn Node FS module'; // 具有文件名,內(nèi)容和回調(diào)函數(shù)的writeFile函數(shù) fs.writeFile('newfile.txt', data, function (err) { if (err) throw err; console.log('File is created successfully.'); });
在終端或命令提示符下使用node命令運(yùn)行程序:
終端輸出
$ node createFileExample.js File is created successfully.
該文件應(yīng)在帶有內(nèi)容“學(xué)習(xí)節(jié)點(diǎn)FS模塊”的示例node.js程序旁邊創(chuàng)建。
// 引入文件系統(tǒng)模塊 var fs = require('fs'); // 讀取文件sample.html fs.readFile('sample.html', // 讀取文件完成時調(diào)用的回調(diào)函數(shù) function(err, data) { if (err) throw err; // 數(shù)據(jù)是包含文件內(nèi)容的緩沖區(qū) console.log(data.toString('utf8')) });
在終端或命令提示符下使用node命令運(yùn)行程序:
終端輸出
$ node readFileExample.js <html> <body> <h1>Header</h1> <p>I have learnt to read a file in Node.js.</p> </body> </html>
確保在node.js示例程序旁邊有一個名為“ sample.txt”的文件。
// 引入fs模塊 var fs = require('fs'); // 刪除名為“ sample.txt”的文件 fs.unlink('sample.txt', function (err) { if (err) throw err; // 如果沒有錯誤,則文件已成功刪除 console.log('File deleted!'); });
在終端或命令提示符下使用node命令運(yùn)行程序:
終端輸出
$ node deleteFile.js File deleted!
文件已成功刪除。
在此示例中,我們將編寫內(nèi)容“ Hello!” ,到文本文件sample.txt。
// 引入文件系統(tǒng)模塊 var fs = require('fs'); var data = "Hello !" // 將數(shù)據(jù)寫入文件sample.html fs.writeFile('sample.txt',data, // 寫入文件后調(diào)用的回調(diào)函數(shù) function(err) { if (err) throw err; // 如果沒有錯誤 console.log("Data is written to file successfully.") });
當(dāng)以上程序在Terminal中運(yùn)行時,
節(jié)目輸出
arjun@arjun-VPCEH26EN:~/workspace/nodejs$ node nodejs-write-to-file-example.js Data is written to file successfully.
// 引入mysql模塊 var mysql = require('mysql'); // 創(chuàng)建具有所需詳細(xì)信息的連接變量 var con = mysql.createConnection({ host: "localhost", // 運(yùn)行mysql的服務(wù)器的IP地址 user: "arjun", // mysql數(shù)據(jù)庫的用戶名 password: "password" // 對應(yīng)的密碼 }); // 連接到數(shù)據(jù)庫。 con.connect(function(err) { if (err) throw err; console.log("Connected!"); });
selectFromTable.js MySQL SELECT FROM查詢的簡單示例
// Node.js MySQL SELECT FROM查詢示例 // 引入mysql模塊 var mysql = require('mysql'); // 創(chuàng)建具有所需詳細(xì)信息的連接變量 var con = mysql.createConnection({ host: "localhost", // 運(yùn)行mysql的服務(wù)器的IP地址 user: "arjun", // mysql數(shù)據(jù)庫的用戶名 password: "password", // 對應(yīng)的密碼 database: "studentsDB" // 使用指定的數(shù)據(jù)庫 }); // 建立與數(shù)據(jù)庫的連接。 con.connect(function(err) { if (err) throw err; // 如果連接成功 con.query("SELECT * FROM students", function (err, result, fields) { // 如果在執(zhí)行上述查詢時出現(xiàn)任何錯誤,則拋出錯誤 if (err) throw err; // 如果沒有錯誤,您將得到結(jié)果 console.log(result); }); });
selectFromWhere.js
// 引入mysql模塊 var mysql = require('mysql'); // 創(chuàng)建具有所需詳細(xì)信息的連接變量 var con = mysql.createConnection({ host: "localhost", // 運(yùn)行mysql的服務(wù)器的IP地址 user: "arjun", // mysql數(shù)據(jù)庫的用戶名 password: "password", // 對應(yīng)的密碼 database: "studentsDB" // 使用指定的數(shù)據(jù)庫 }); // 建立與數(shù)據(jù)庫的連接。 con.connect(function(err) { if (err) throw err; // 如果連接成功 con.query("SELECT * FROM students where marks>90", function (err, result, fields) { // 如果在執(zhí)行上述查詢時出現(xiàn)任何錯誤,則拋出錯誤 if (err) throw err; // 如果沒有錯誤,您將得到結(jié)果 console.log(result); }); });
從上面的.js文件的位置打開一個終端,然后運(yùn)行selectFromWhere.js Node.js MySQL示例程序。
AscOrderExample.js
//引入mysql模塊 var mysql = require('mysql'); // 創(chuàng)建具有所需詳細(xì)信息的連接變量 var con = mysql.createConnection({ host: "localhost", // 運(yùn)行mysql的服務(wù)器的IP地址 user: "arjun", // mysql數(shù)據(jù)庫的用戶名 password: "password", // 對應(yīng)的密碼 database: "studentsDB" // 使用指定的數(shù)據(jù)庫 }); // 建立與數(shù)據(jù)庫的連接。 con.connect(function(err) { if (err) throw err; // 如果連接成功 con.query("SELECT * FROM students ORDER BY marks", function (err, result, fields) { // 如果在執(zhí)行上述查詢時出現(xiàn)任何錯誤,則拋出錯誤 if (err) throw err; // 如果沒有錯誤,您將得到結(jié)果 console.log(result); }); });
運(yùn)行上面的Node.js MySQL ORDER BY示例程序。
// 引入mysql模塊 var mysql = require('mysql'); // 創(chuàng)建具有所需詳細(xì)信息的連接變量 var con = mysql.createConnection({ host: "localhost", // 運(yùn)行mysql的服務(wù)器的IP地址 user: "arjun", // mysql數(shù)據(jù)庫的用戶名 password: "password", // 對應(yīng)的密碼 database: "studentsDB" // 使用指定的數(shù)據(jù)庫 }); // 建立與數(shù)據(jù)庫的連接。 con.connect(function(err) { if (err) throw err; // 如果連接成功 con.query("INSERT INTO students (name,rollno,marks) values ('Anisha',12,95)", function (err, result, fields) { // 如果在執(zhí)行上述查詢時出現(xiàn)任何錯誤,則拋出錯誤 if (err) throw err; // 如果沒有錯誤,您將得到結(jié)果 console.log(result); }); });
在終端中的Node.js MySQL程序上方運(yùn)行。
UpdateRecordsFiltered.js-更新MySQL表的記錄
// 引入mysql模塊 var mysql = require('mysql'); // 創(chuàng)建具有所需詳細(xì)信息的連接變量 var con = mysql.createConnection({ host: "localhost", // 運(yùn)行mysql的服務(wù)器的IP地址 user: "arjun", // mysql數(shù)據(jù)庫的用戶名 password: "password", // 對應(yīng)的密碼 database: "studentsDB" // 使用指定的數(shù)據(jù)庫 }); // 建立與數(shù)據(jù)庫的連接。 con.connect(function(err) { if (err) throw err; // 如果連接成功 con.query("UPDATE students SET marks=84 WHERE marks=74", function (err, result, fields) { // 如果在執(zhí)行上述查詢時出現(xiàn)任何錯誤,則拋出錯誤 if (err) throw err; // 如果沒有錯誤,您將得到結(jié)果 console.log(result); }); });
在終端中運(yùn)行以上程序
終端輸出
arjun@arjun-VPCEH26EN:~/workspace/nodejs$ node UpdateRecordsFiltered.js OkPacket { fieldCount: 0, affectedRows: 3, insertId: 0, serverStatus: 34, warningCount: 0, message: '(Rows matched: 3 Changed: 3 Warnings: 0', protocol41: true, changedRows: 3 }
在表上的記錄的一個或多個屬性上應(yīng)用過濾器的情況下,對指定的表執(zhí)行DELETE FROM查詢。
// 引入mysql模塊 var mysql = require('mysql'); // 創(chuàng)建具有所需詳細(xì)信息的連接變量 var con = mysql.createConnection({ host: "localhost", // 運(yùn)行mysql的服務(wù)器的IP地址 user: "arjun", // mysql數(shù)據(jù)庫的用戶名 password: "password", // 對應(yīng)的密碼 database: "studentsDB" // 使用指定的數(shù)據(jù)庫 }); // 連接到數(shù)據(jù)庫。 con.connect(function(err) { if (err) throw err; // 如果連接成功 con.query("DELETE FROM students WHERE rollno>10", function (err, result, fields) { // 如果在執(zhí)行上述查詢時出現(xiàn)任何錯誤,則拋出錯誤 if (err) throw err; // 如果沒有錯誤,您將得到結(jié)果 console.log(result); }); });
運(yùn)行deleteRecordsFiltered.js-終端輸出
arjun@arjun-VPCEH26EN:~/workspace/nodejs$ node deleteRecordsFiltered.js OkPacket { fieldCount: 0, affectedRows: 6, insertId: 0, serverStatus: 34, warningCount: 0, message: '', protocol41: true, changedRows: 0 }
我們可以使用DOT(。)運(yùn)算符將結(jié)果集中的記錄作為數(shù)組和記錄的屬性來訪問。
// Node.js MySQL結(jié)果對象示例 // 引入mysql模塊 var mysql = require('mysql'); // 創(chuàng)建具有所需詳細(xì)信息的連接變量 var con = mysql.createConnection({ host: "localhost", // 運(yùn)行mysql的服務(wù)器的IP地址 user: "arjun", // mysql數(shù)據(jù)庫的用戶名 password: "password", // 對應(yīng)的密碼 database: "studentsDB" // 使用指定的數(shù)據(jù)庫 }); // 建立與數(shù)據(jù)庫的連接。 con.connect(function(err) { if (err) throw err; // 如果連接成功 con.query("SELECT * FROM students", function (err, result, fields) { // 如果在執(zhí)行上述查詢時出現(xiàn)任何錯誤,則拋出錯誤 if (err) throw err; // 如果沒有錯誤,您將得到結(jié)果 // 對結(jié)果中的所有行進(jìn)行迭代 Object.keys(result).forEach(function(key) { var row = result[key]; console.log(row.name) }); }); });
使用終端中的節(jié)點(diǎn)運(yùn)行以上程序
終端輸出
arjun@arjun-VPCEH26EN:~/workspace/nodejs$ node selectUseResultObject.js John Arjun Prasanth Adarsh Raja Sai Ross Monica Lee Bruce Sukumar
// 引入url模塊 var url = require('url'); var address = 'http://localhost:8080/index.php?type=page&action=update&id=5221'; var q = url.parse(address, true); console.log(q.host); //返回'localhost:8080' console.log(q.pathname); //返回'/index.php' console.log(q.search); //returns '?type=page&action=update&id=5221' var qdata = q.query; // 返回一個對象:{類型:頁面,操作:'update',id ='5221'} console.log(qdata.type); //返回“頁面” console.log(qdata.action); //返回“更新” console.log(qdata.id); //返回“ 5221”
終端輸出
$ node urlParsingExample.js localhost:8080 /index.php ?type=page&action=update&id=5221 page update 5221
以下示例可幫助您使用JSON。parse()函數(shù)并從JSON對象訪問元素。
// json數(shù)據(jù) var jsonData = '{"persons":[{"name":"John","city":"New York"},{"name":"Phil","city":"Ohio"}]}'; // 解析json var jsonParsed = JSON.parse(jsonData); // 訪問元素 console.log(jsonParsed.persons[0].name);
運(yùn)行nodejs-parse-json.js的終端輸出
arjun@arjun-VPCEH26EN:~/workspace/nodejs$ node nodejs-parse-json.js John
Node.js示例–一個HTTP Web服務(wù)器,它準(zhǔn)備帶有HTTP標(biāo)頭和消息的響應(yīng)。
// 在文件中引入http模塊 var http = require('http'); // 創(chuàng)建一個服務(wù)器 http.createServer(function (req, res) { // http標(biāo)頭 // 200-確定消息 // 要使用html內(nèi)容進(jìn)行響應(yīng),“ Content-Type”應(yīng)為“ text / html” res.writeHead(200, {'Content-Type': 'text/html'}); res.write('Node.js says hello!'); //給客戶寫回應(yīng) res.end(); //結(jié)束回應(yīng) }).listen(9000); //服務(wù)器對象在端口9000上偵聽
運(yùn)行服務(wù)器
$ node httpWebServer.js
打開瀏覽器并點(diǎn)擊URL“ http://127.0.0.1:9000/”,以觸發(fā)對我們的Web服務(wù)器的請求。