个人学习记录,仅供参考
创建第一个应用
步骤
- 引入 required 模块:我们可以使用 require 指令来载入 Node.js 模块。
- 创建服务器:服务器可以监听客户端的请求,类似于 Apache 、Nginx 等 HTTP 服务器。
- 接收请求与响应请求 服务器很容易创建,客户端可以使用浏览器或终端发送 HTTP 请求,服务器接收请求后返回响应数据。
引入 required 模块
var http = require("http");
创建服务器
/**
* request 请求 输入-请求的信息
* response 响应 输出-输出的东西
* http 模块提供的函数: createServer 。这个函数会返回 一个对象,这个对象有一个叫做 listen 的方法,这个方法有一个数值参数, 指定这个 HTTP 服务器监听的端口号。
*/
http.createServer(function (req, res) {
switch (req.url){
case '/1.html':
res.write("1111111");
break;
case '/2.html':
res.write("22222222");
break;
default:
res.write("404");
break;
}
res.end();
}).listen(8888);
启动服务器
node server.js
接收前台数据
GET
前台代码提交表单
<form action="http://127.0.0.1:8080/www" method="get">
用户名:<input type="text" name="user" value="">
密码:<input type="password" name="pass" value="">
<input type="submit" value="提交">
</form>
后台代码接收数据
接收进来的数据参数可以有三种方式去解析
- 手动拆分字符串 (比较麻烦)
- 使用node提供的 querystring 方法
const http = require('http');
const querystring = require('querystring');
http.createServer(function (req,res) {
var GET = {};
if(req.url.indexOf("?") != -1){
var arr = req.url.split('?');
var url = arr[0];
GET = querystring.parse(arr[1]);
}else {
var url = req.url;
}
console.log(url,GET)// /aaa { user: '孙悟空', pass: '123456' }
res.write('aaa');
res.end();
}).listen(8080);
- 使用node提供的 url 方法 (相对来说 url还是比较简单的)
const http = require('http');
const urlLib = require('url');
http.createServer(function (req,res) {
var obj = urlLib.parse(req.url,true)
var url = obj.pathname;
var GET = obj.query;
console.log(url,GET)// /aaa { user: '孙悟空', pass: '123456' }
res.write('aaa');
res.end();
}).listen(8080);
POST
前台代码提交表单
<form action="http://127.0.0.1:8080/www" method="post">
用户名:<input type="text" name="user" value="">
密码:<input type="password" name="pass" value="">
<input type="submit" value="提交">
</form>
后台代码接收数据
在这里咱们使用node提供的 querystring 方法去解析接收过来的数据
上代码
const http = require('http');
const querystring = require('querystring');
http.createServer(function (req,res) {
var str = '';//接收数据
//data ==> 有一段数据到达(很多次)每次执行一次就是分段一次
var i = 0;
req.on('data',function (data) {
console.log(`第${i++}次收到数据`);//第0次收到数据(每次执行都会打印一个)
str += data;
});
//end ==> 数据全部到达的时候 (只发生一次)
req.on('end',function () {
var POST = querystring.parse(str);
console.log(POST);//{ user: '孙悟空', pass: '123123' }
});
}).listen(8080);
以上知识点整合
const http = require('http');
const fs = require('fs');
const querystring = require('querystring');
const urlLib = require('url');
http.createServer(function (req,res) {
//GET
var obj = urlLib.parse(req.url,true);
var url = obj.pathname;
const GET = obj.query;
//POST
var str = '';
req.on("data",function (data) {
str += data;
});
req.on("end",function () {
const POST = querystring.parse(str);
/**
* url==>要什么
* GET==>get数据
* POST==>post数据
*/
console.log(url,GET,POST);
//文件请求
var file_name = './www'+url;
fs.readFile(file_name,function (err,data) {
if(err){
res.write('404')
}else {
res.write(data)
}
})
})
}).listen(8080);