node.js 的 I/O交互
I/O 是什么颊艳?
I 是input (要監(jiān)聽的可讀流) .棋枕,O是output(要寫入 readline 的可寫流)重斑,讀入讀出 交互
IO 是輸入輸出, 文件算, 網(wǎng)絡(luò)算, 數(shù)據(jù)庫算, 用戶輸入文本算
異步I/O介紹
終端交互使用步驟
- 引入 readline 模塊
var readline = require('readline'); //引入 readline 模塊 - 創(chuàng)建接口窥浪,參數(shù)一 輸入漾脂,參數(shù)二輸出
var rl = readline.createInterface({input: process.stdin,output: process.stdout}); - 設(shè)置提示
rl.setPrompt('請輸入:'); - 設(shè)置用戶輸入并監(jiān)聽
rl.prompt();
5.設(shè)置用戶輸入鍵盤事件
rl.on('line',(line) => {
//獲取用戶輸入
var str = line.trim();
//判斷用戶輸入沒有
if(str == 0){
//打印信息
console.log('歡迎下次再來!');
//退出
rl.close(); //也可以process.exit()
}else{
//把用輸入的打印出來
console.log('你輸入的是:'+str);
//輸入監(jiān)聽
rl.prompt();
}
}) - 程序?qū)懲晷Ч沁@樣的:
E:\全棧工程師\20160810>node io.js
請輸入:node.js是世界上最好的語言啊终。
你輸入的是:node.js是世界上最好的語言蓝牲。
請輸入:
歡迎下次再來例衍!
自定義模塊編寫和使用
在新的js文件中使用
exports.模塊名
來定義模塊
-
先創(chuàng)建一個js文件編輯:
//方式一
exports.test = function(){
console.log('調(diào)用test模塊');
}
//方式二
var func = function(){
console.log('這是一個函數(shù)');
}exports.f = func;
在任何js文件中調(diào)用此模塊
//先引入模塊
var m = require('絕對路徑+文件名');
//使用
m.test();
m.func();
web交互使用
使用到了querystring模塊硼一,它是用來處理字節(jié)流的
引入querystring 模塊
var qs = require('querystring');-
對
request
對象添加監(jiān)聽般贼,對提交的數(shù)據(jù)進(jìn)行處理request.addListener('data', (postdata) => { //打印postdata console.log(postdata); var a = ''; a += postdata; var b = qs.parse(a); //打印postdata轉(zhuǎn)換后的數(shù)據(jù) console.log(b); });
querystring.stringify
將一個對象序列化為一個查詢字符串,可選擇是否覆蓋默認(rèn)的分隔符和賦值符霞赫。
實例:
querystring.stringify({foo: 'bar'})
//returns
'foo=bar'querystring.stringify({foo: 'bar', baz: 'bob'}, ';', ':')
// returns'foo:bar;baz:bob'
querystring.parse
將一個查詢字符串反序列化為一個對象叠洗,可選擇是否覆蓋默認(rèn)的分隔符和賦值符旅东。
實例:
querystring.parse('a=b&b=c');
// returns{ a: 'b', b: 'c' }