node.js 的 I/O交互
I/O 是什么?
I 是input (要监听的可读流) .,O是output(要写入 readline 的可写流),读入读出 交互
IO 是输入输出, 文件算, 网络算, 数据库算, 用户输入文本算
异步I/O介绍
终端交互使用步骤
- 引入 readline 模块
var readline = require('readline'); //引入 readline 模块 - 创建接口,参数一 输入,参数二输出
var rl = readline.createInterface({input: process.stdin,output: process.stdout}); - 设置提示
rl.setPrompt('请输入:'); - 设置用户输入并监听
rl.prompt();
5.设置用户输入键盘事件
rl.on('line',(line) => {
//获取用户输入
var str = line.trim();
//判断用户输入没有
if(str == 0){
//打印信息
console.log('欢迎下次再来!');
//退出
rl.close(); //也可以process.exit()
}else{
//把用输入的打印出来
console.log('你输入的是:'+str);
//输入监听
rl.prompt();
}
}) - 程序写完效果是这样的:
E:\全栈工程师\20160810>node io.js
请输入:node.js是世界上最好的语言。
你输入的是:node.js是世界上最好的语言。
请输入:
欢迎下次再来!
自定义模块编写和使用
在新的js文件中使用
exports.模块名
来定义模块
-
先创建一个js文件编辑:
//方式一
exports.test = function(){
console.log('调用test模块');
}
//方式二
var func = function(){
console.log('这是一个函数');
}exports.f = func;
在任何js文件中调用此模块
//先引入模块
var m = require('绝对路径+文件名');
//使用
m.test();
m.func();
web交互使用
使用到了querystring模块,它是用来处理字节流的
引入querystring 模块
var qs = require('querystring');-
对
request
对象添加监听,对提交的数据进行处理request.addListener('data', (postdata) => { //打印postdata console.log(postdata); var a = ''; a += postdata; var b = qs.parse(a); //打印postdata转换后的数据 console.log(b); });
querystring.stringify
将一个对象序列化为一个查询字符串,可选择是否覆盖默认的分隔符和赋值符。
实例:
querystring.stringify({foo: 'bar'})
//returns
'foo=bar'querystring.stringify({foo: 'bar', baz: 'bob'}, ';', ':')
// returns'foo:bar;baz:bob'
querystring.parse
将一个查询字符串反序列化为一个对象,可选择是否覆盖默认的分隔符和赋值符。
实例:
querystring.parse('a=b&b=c');
// returns{ a: 'b', b: 'c' }