目录
在 Node.js 中,参数传递有两种常见的形式:
获取方法
GET方法一般在请求地址中以[?参数1=值1&参数2=值2]的格式传递。 在Node.js中html 参数传递,获取url后即可获取参数,如下:
//1.引入http模块 var http = require("http"); //2.创建服务 var server = http.createServer(); //3. 监听请求事件,当有请求时,触发回调函数 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("请求的参数为:
"); for(var index in paramArray){ res.write(paramArray[index]) res.write("
"); } } res.end(); }); //4. 监听8080端口 server.listen(8080,function(){ console.log("server is running"); });
邮寄方式
目前POST数据通常以form表单的形式进行传输。 在 Node.js 中,POST 传递的数据位于请求正文中。
首先创建一个reg.html静态html页面,然后将数据提交到action.html,如下:
//1.引入http模块 var http = require("http"); var fs = require("fs"); var path = require("path"); //2.创建服务 var server = http.createServer(); var extnames = {".html":"text/html",".css":"text/css",".png":"image/png"}; //3. 监听请求事件,当有请求时,触发回调函数 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"){ //从请求主体中获取POST方式传输的数据 var params=""; req.on("data",function(data){ params += data.toString(); }); //监听结束事件 req.on("end",function(){ res.write("后台已经收到请求:
"); 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. 监听8080端口 server.listen(8080,function(){ console.log("server is running"); });
运行服务,然后在浏览器中输入URL,如下图:
注意:可以看出,GET方法和POST方法的参数结构是一样的,只不过GET传递的是URL,POST传递的是请求体。
动态网页
在前面的例子中html 参数传递,所有的html页面都是静态页面,不会随着用户请求而改变。 那么如何动态改变网页呢? 答案是使用模板。
首先创建一个html页面,并在页面中定义一个变量。 如下:
这是首页 这是首页
你的访问IP为:
然后在Node.js前端程序中,动态获取变量的值并替换,如下:
var http = require("http"); var fs = require("fs"); var path = require("path"); //2.创建服务 var server = http.createServer(); var extnames = {".html":"text/html",".css":"text/css",".png":"image/png"}; //3. 监听请求事件,当有请求时,触发回调函数 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(),"",ip); res.write(content); res.end(); }); } }); //4. 监听8080端口 server.listen(8080,function(){ console.log("server is running"); }); function render(html,name,value){ return html.replace(name,value); }
运行该示例,在浏览器中输入://127.0.0.1:8080/,如下所示:
注:IP为客户端IP,会随着接入的客户端电脑的不同而变化。
上面的例子都是Node.js原生的开发方式,有很多不方便的地方。 我们将引入框架来提高开发效率。
至此,这篇关于Node.js中两种参数传递方法的解读就介绍到这里了。 更多关于Node.js中参数传递的形式,请搜索云海天教程之前的文章或者继续浏览下面的相关文章。 希望大家以后多多支持云海天教程!
发表评论