第一部分 终端交互
- 使用到了
readline
模块,在终端进行io操作; - 这个模块是nodejs自带的
使用步骤:
- 引入 readline终端模块
var readline = require('readline');
- 创建接口,其中 process.stdin:标准输入;process.stdout:标准输出
var r = readline.createInterface(process.stdin, process.stdout);
- 设置提示内容
r.setPrompt('请输入:');
- 输入监听
r.prompt();
- 用户输入内容事件
r.on('line', (line) => {
//获取用户输入
var str = line.trim();
if(str == 0){
//输出信息
console.log('欢迎下次再来!');
//退出终端
process.exit();
}else{
//终端输出
console.log('你输入的是:'+str);
//输入监听
r.prompt();
}
});
第二部分 自定义模块编写及使用
- 在项目根目录下(这个目录可以自定义)创建一个js文件,这个js文件就是自定义模块文件
vim lesson.js
- 编辑文件这个js文件
//方式一
exports.test = function(){
console.log('调用test模块');
}
//方式二
function hello(){
console.log('调用hello模块');
}
exports.h = hello;
- 在主程序中引入并使用
//引入
var f = require('./lesson');//这里可以不加.js后缀
//使用
f.test();
f.h();
第三部分 web页面交互
- 使用到了
querystring
模块,在web页面提交的数据进行格式转换; - 这个模块是nodejs自带的
querystring.stringify
将一个对象序列化为一个查询字符串,可选择是否覆盖默认的分隔符和赋值符。
例如:
querystring.stringify({foo: 'bar'})
// 'foo=bar'
querystring.stringify({foo: 'bar', baz: 'bob'}, ';', ':')
// 'foo:bar;baz:bob'
querystring.parse
将一个查询字符串反序列化为一个对象,可选择是否覆盖默认的分隔符和赋值符。
例如:
querystring.parse('a=b&b=c')
// { a: 'b', b: 'c' }
使用步骤:
1.引入 querystring终端模块
var qs = require('querystring');
2. 对request
对象添加监听;对提交的数据进行处理然后返回数据
1) 存储接收到的数据
var body = '';
2) 接收客户端提交的数据(一部分一部分的接收)
req.addListener('data', (postdata) => {
body += postdata;
});
3) 数据接收完成
req.addListener('end', () => {
//对提交的数据进行格式转换
var params = qs.parse(body);
console.log(params);
//处理业务
// ...
});
4) 数据返回
- 方式一:form表单提交返回
//定义网站根目录
const documentRoot = './html';
fs.readFile(documentRoot+'/index.html', function(err, data){
if(err){
res.writeHead(404, {'Content-Type' : 'text/html;charset=utf-8'});
res.write('File not found !');
res.end();
}else{
res.writeHead(200, {'Content-Type' : 'text/html;charset=utf-8'});
res.write(data);
res.write(result);
res.end();
}
});
- 方式二:ajax请求返回json数据
//返回的数据类型 application/json
res.writeHead(200, {'Content-Type' : 'application/json;charset=utf-8'});
//给客户端返回一个json格式的数据
res.write(JSON.stringify({ result:result }));
res.end();
代码参考:
//判断是否是POST提交过来的
if(req.method != 'POST'){
res.writeHead(200, {'Content-Type':'text/html;charset=utf-8'});
res.write('request method Eror');
res.end();
return false;
}
//存储接收到的数据
var body = '';
//接收客户端提交的数据(一部分一部分的接收)
req.addListener('data', (postdata) => {
body += postdata;
});
//数据接收完成
req.addListener('end', () => {
//对提交的数据进行格式转换
var params = qs.parse(body);
console.log(params);
//业务处理
var result = '结果:';
//显示结果
//方式一:form表单提交返回
/* fs.readFile(documentRoot+'/index.html', function(err, data){
if(err){
res.writeHead(404, {'Content-Type' : 'text/html;charset=utf-8'});
res.write('File not found !');
res.end();
}else{
res.writeHead(200, {'Content-Type' : 'text/html;charset=utf-8'});
res.write(data);
res.write(result);
res.end();
}
});*/
//方式二:ajax请求返回json数据
//返回的数据类型 application/json
res.writeHead(200, {'Content-Type' : 'application/json;charset=utf-8'});
//给客户端返回一个json格式的数据
res.write(JSON.stringify({ result:result }));
res.end();
});
第四部分 nodejs 模块安装及使用
- 去
https://www.npmjs.com
查找对应的模块 - 在本地项目根目录下执行
npm install 模块名
进行安装 - 在项目中的通过
require('模块')
来引入使用 - 具体的模块使用帮助可以查看
https://www.npmjs.com
上面的介绍