Node.js示例:我們將使用Node.js來介紹基礎知識,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命令運行程序:
終端輸出
$ node createFileExample.js File is created successfully.
該文件應在帶有內(nèi)容“學習節(jié)點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命令運行程序:
終端輸出
$ 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命令運行程序:
終端輸出
$ 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.")
});當以上程序在Terminal中運行時,
節(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)建具有所需詳細信息的連接變量
var con = mysql.createConnection({
host: "localhost", // 運行mysql的服務器的IP地址
user: "arjun", // mysql數(shù)據(jù)庫的用戶名
password: "password" // 對應的密碼
});
// 連接到數(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)建具有所需詳細信息的連接變量
var con = mysql.createConnection({
host: "localhost", // 運行mysql的服務器的IP地址
user: "arjun", // mysql數(shù)據(jù)庫的用戶名
password: "password", // 對應的密碼
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)建具有所需詳細信息的連接變量
var con = mysql.createConnection({
host: "localhost", // 運行mysql的服務器的IP地址
user: "arjun", // mysql數(shù)據(jù)庫的用戶名
password: "password", // 對應的密碼
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文件的位置打開一個終端,然后運行selectFromWhere.js Node.js MySQL示例程序。
AscOrderExample.js
//引入mysql模塊
var mysql = require('mysql');
// 創(chuàng)建具有所需詳細信息的連接變量
var con = mysql.createConnection({
host: "localhost", // 運行mysql的服務器的IP地址
user: "arjun", // mysql數(shù)據(jù)庫的用戶名
password: "password", // 對應的密碼
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);
});
});運行上面的Node.js MySQL ORDER BY示例程序。
// 引入mysql模塊
var mysql = require('mysql');
// 創(chuàng)建具有所需詳細信息的連接變量
var con = mysql.createConnection({
host: "localhost", // 運行mysql的服務器的IP地址
user: "arjun", // mysql數(shù)據(jù)庫的用戶名
password: "password", // 對應的密碼
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程序上方運行。
UpdateRecordsFiltered.js-更新MySQL表的記錄
// 引入mysql模塊
var mysql = require('mysql');
// 創(chuàng)建具有所需詳細信息的連接變量
var con = mysql.createConnection({
host: "localhost", // 運行mysql的服務器的IP地址
user: "arjun", // mysql數(shù)據(jù)庫的用戶名
password: "password", // 對應的密碼
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);
});
});在終端中運行以上程序
終端輸出
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 }在表上的記錄的一個或多個屬性上應用過濾器的情況下,對指定的表執(zhí)行DELETE FROM查詢。
// 引入mysql模塊
var mysql = require('mysql');
// 創(chuàng)建具有所需詳細信息的連接變量
var con = mysql.createConnection({
host: "localhost", // 運行mysql的服務器的IP地址
user: "arjun", // mysql數(shù)據(jù)庫的用戶名
password: "password", // 對應的密碼
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);
});
});運行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(。)運算符將結(jié)果集中的記錄作為數(shù)組和記錄的屬性來訪問。
// Node.js MySQL結(jié)果對象示例
// 引入mysql模塊
var mysql = require('mysql');
// 創(chuàng)建具有所需詳細信息的連接變量
var con = mysql.createConnection({
host: "localhost", // 運行mysql的服務器的IP地址
user: "arjun", // mysql數(shù)據(jù)庫的用戶名
password: "password", // 對應的密碼
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é)果中的所有行進行迭代
Object.keys(result).forEach(function(key) {
var row = result[key];
console.log(row.name)
});
});
});使用終端中的節(jié)點運行以上程序
終端輸出
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);運行nodejs-parse-json.js的終端輸出
arjun@arjun-VPCEH26EN:~/workspace/nodejs$ node nodejs-parse-json.js John
Node.js示例–一個HTTP Web服務器,它準備帶有HTTP標頭和消息的響應。
// 在文件中引入http模塊
var http = require('http');
// 創(chuàng)建一個服務器
http.createServer(function (req, res) {
// http標頭
// 200-確定消息
// 要使用html內(nèi)容進行響應,“ Content-Type”應為“ text / html”
res.writeHead(200, {'Content-Type': 'text/html'});
res.write('Node.js says hello!'); //給客戶寫回應
res.end(); //結(jié)束回應
}).listen(9000); //服務器對象在端口9000上偵聽運行服務器
$ node httpWebServer.js
打開瀏覽器并點擊URL“ http://127.0.0.1:9000/”,以觸發(fā)對我們的Web服務器的請求。
