Node.js中參數(shù)傳遞的兩種方式詳解
參數(shù)傳遞方式
在Node.js中,參數(shù)傳遞常見的共兩種方式:
- GET方式:通過地址欄鍵=值的方式進(jìn)行傳遞。
- POST方式:通過表單的方式傳遞請(qǐng)求數(shù)據(jù)。
GET方式
GET方式通常是在請(qǐng)求地址中以【?參數(shù)1=值1&參數(shù)2=值2】的格式進(jìn)行傳遞,在Node.js中可以通過獲取url然后進(jìn)行獲取參數(shù),如下所示:
//1.引入http模塊
var http = require('http');
//2.創(chuàng)建服務(wù)
var server = http.createServer();
//3. 監(jiān)聽請(qǐng)求事件,當(dāng)有請(qǐng)求時(shí),觸發(fā)回調(diào)函數(shù)
server.on('request',function(req,res){
res.writeHead(200,{"content-type":"text/html;charset=utf-8"});
var url = req.url;
if(url.indexOf('?')>0){
params = url.split('?')[1];
paramArray = params.split('&');
res.write("<h3>請(qǐng)求的參數(shù)為:</h3>");
for(var index in paramArray){
res.write(paramArray[index])
res.write("<br />");
}
}
res.end();
});
//4. 監(jiān)聽8080端口
server.listen(8080,function(){
console.log("server is running");
});運(yùn)行示例,在瀏覽器中打開,如下所示:

POST方式
目前一般采用form表單的方式傳遞POST數(shù)據(jù)。在Node.js中,POST傳遞的數(shù)據(jù)在請(qǐng)求體中。
首先創(chuàng)建一個(gè)reg.html靜態(tài)html頁面,然后提交數(shù)據(jù)到action.html,具體如下所示:
//1.引入http模塊
var http = require('http');
var fs = require('fs');
var path = require('path');
//2.創(chuàng)建服務(wù)
var server = http.createServer();
var extnames = {".html":"text/html",".css":"text/css",".png":"image/png"};
//3. 監(jiān)聽請(qǐng)求事件,當(dāng)有請(qǐng)求時(shí),觸發(fā)回調(diào)函數(shù)
server.on('request',function(req,res){
var url=req.url;
if(url==="/"){
url="/index.html";
}
var localPath = './www'+url;
var extname = path.extname(localPath);
res.writeHead(200,{"content-type":""+extnames[extname]+";charset=utf-8"});
if(url==="/action.html"){
//從請(qǐng)求主體中獲取POST方式傳輸?shù)臄?shù)據(jù)
var params='';
req.on('data',function(data){
params += data.toString();
});
//監(jiān)聽結(jié)束事件
req.on('end',function(){
res.write("<h3>后臺(tái)已經(jīng)收到請(qǐng)求:</h3>");
res.write(params);
res.end();
});
return;
}
console.log(localPath);
if(extname===".ico"){
res.end();
}else{
fs.readFile(localPath,function(err,data){
res.write(data);
res.end();
});
}
});
//4. 監(jiān)聽8080端口
server.listen(8080,function(){
console.log("server is running");
});運(yùn)行服務(wù),然后在瀏覽器輸入網(wǎng)址,如下所示:

注意:可以看出,GET方式和POST方式的參數(shù)結(jié)構(gòu)都是一樣的,只是GET通過URL,POST通過請(qǐng)求主體。
動(dòng)態(tài)網(wǎng)頁
在之前的示例中,所有的html頁面都是靜態(tài)頁面,不會(huì)隨著用戶請(qǐng)求的變化而變化。那如何動(dòng)態(tài)的變更網(wǎng)頁呢?答案是采用模板。
首先創(chuàng)建一個(gè)html頁面,并在頁面中定義一個(gè)變量。如下所示:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>這是首頁</title>
<link type="text/css" href="css/index.css" rel="external nofollow" />
</head>
<body>
<h3>這是首頁</h3>
<h3>你的訪問IP為:</h3>
<h3><%=ipAddr%></h3>
</body>
</html>然后在Node.js后端程序中,動(dòng)態(tài)獲取變量的值,并進(jìn)行替換,如下所示:
var http = require('http');
var fs = require('fs');
var path = require('path');
//2.創(chuàng)建服務(wù)
var server = http.createServer();
var extnames = {".html":"text/html",".css":"text/css",".png":"image/png"};
//3. 監(jiān)聽請(qǐng)求事件,當(dāng)有請(qǐng)求時(shí),觸發(fā)回調(diào)函數(shù)
server.on('request',function(req,res){
var url=req.url;
if(url==="/"){
url="/index.html";
}
var localPath = './www'+url;
var extname = path.extname(localPath);
res.writeHead(200,{"content-type":""+extnames[extname]+";charset=utf-8"});
console.log(localPath);
if(extname===".ico"){
res.end();
}else{
fs.readFile(localPath,function(err,data){
var ip = req.socket.remoteAddress;
var content = render(data.toString(),'<%=ipAddr%>',ip);
res.write(content);
res.end();
});
}
});
//4. 監(jiān)聽8080端口
server.listen(8080,function(){
console.log("server is running");
});
function render(html,name,value){
return html.replace(name,value);
}運(yùn)行示例,在瀏覽器中輸入http://http://127.0.0.1:8080/,如下所示:

注意:IP為客戶端IP,隨著訪問的客戶端電腦而改變。
以上示例都是Node.js的原生開發(fā)方式,存在諸多不便,后面將通過引入框架來提高開發(fā)的效率。
到此這篇關(guān)于Node.js中參數(shù)傳遞的兩種方式詳解的文章就介紹到這了,更多相關(guān)Node.js參數(shù)傳遞方式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
如何解決安裝websocket還是報(bào)錯(cuò)Cannot find module'ws&apos
這篇文章主要介紹了如何解決安裝websocket還是報(bào)Cannot find module'ws'問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02
node.js中的fs.appendFileSync方法使用說明
這篇文章主要介紹了node.js中的fs.appendFileSync方法使用說明,本文介紹了fs.appendFileSync方法說明、語法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下2014-12-12
詳解如何使用Node.js連接數(shù)據(jù)庫ORM
這篇文章主要為大家介紹了詳解如何使用Node.js連接數(shù)據(jù)庫ORM示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12

