node笔记
nodejs换句话来说,就是服务器,是用来写服务器的js,优秀的中间层
对于node来说,模块就是一切,学node就是学各种模块的使用
1. 响应请求
2. 数据交互
接收浏览器的get数据
接收浏览器的post数据
分多次发给服务器的,就是分段发(多大,由协议,协商,配置决定),因为post大,没法一次发.
所以要监听接收
get和post结合:
const http = require('http');
const url = require('url');
const querystring = require('querystring');
const fs = require('fs');
http.createServer((req, res) => {
let path = '', get = {}, post = {};
if (req.method == 'GET') {
let { pathname, query } = url.parse(req.url, true);
path = pathname;
get = query;
complete();
} else if (req.method == 'POST') {
path = req.url;
let arr = [];
req.on('data', buffer => {
arr.push(buffer);
});
req.on('end', () => {
let buffer = Buffer.concat(arr);
post = querystring.parse(buffer.toString());
complete();
});
}
function complete() {
console.log(path, get, post);
}
}).listen(8080);
const http = require('http');
const url = require('url');
const querystring = require('querystring');
const fs = require('fs');
let users = {};
http.createServer((req, res) => {
let path = '', get = {}, post = {};
if (req.method == 'GET') {
let { pathname, query } = url.parse(req.url, true);
path = pathname;
get = query;
complete();
} else if (req.method == 'POST') {
path = req.url;
let arr = [];
req.on('data', buffer => {
arr.push(buffer);
});
req.on('end', () => {
let buffer = Buffer.concat(arr);
post = querystring.parse(buffer.toString());
complete();
});
}
function complete() {
if (path == '/reg') {
let { username, password } = get;
if (users[username]) {
res.write(JSON.stringify({ error: 1, msg: '此用户名已存在' }));
res.end();
} else {
users[username] = password;
res.write(JSON.stringify({ error: 0, msg: '' }));
res.end();
}
} else if (path == '/login') {
let { username, password } = get;
if (!users[username]) {
res.write(JSON.stringify({ error: 1, msg: '找不到此用户' }));
res.end();
} else if (users[username] != password) {
res.write(JSON.stringify({ error: 1, msg: '密码不对' }));
res.end();
} else {
res.write(JSON.stringify({ error: 0, msg: '' }));
res.end();
}
} else {
fs.readFile(`www${path}`, (err, buffer) => {
if (err) {
res.writeHeader(404);
res.write('Not Found');
res.end();
} else {
res.write(buffer);
res.end();
}
});
}
}
}).listen(8080);
定义模块
module为了让exports可以赋值