課前回顧
靜態(tài)服務(wù)器
url地址獲取
fs文件操作
根據(jù)不同url返回不同頁面
新內(nèi)容(終端IO交互, web表單交互)
- 終端交互
io.js
var readline = require('readline'); // 引入交互模塊
var sk = require('./shangke'); // 引入自定義模塊, 這里的后綴.js可以加可以不加
var rl = readline.createInterface(process.stdin, process.stdout); //
rl.setPrompt('請輸入:'); // 提示用戶
rl.prompt(); // 實例化監(jiān)聽
rl.on('line', (line) => { // 讀進(jìn)內(nèi)容
var str = line.trim();
if (str == '0') { // 如果用戶輸入0, 則退出
console.log('歡迎下次再來');
process.exit();
} else { // 否則, 通過自定義組件模塊顯示輸入的內(nèi)容
// console.log('你輸入的是' + str);
sk.shangke(str); // 調(diào)用模塊中的
sk.h(); // 調(diào)用模塊中的hello
rl.prompt();
}
});// .on('close', () => {
// console.log('歡迎下次再來');
// process.exit();
// })
shangke.js
exports.shangke = function(str) { // 模塊化
console.log('這是上課模塊' + str);
}
function hello() {
console.log('this is hello');
}
exports.h = hello();
- web表單交互
通過引入模塊querystring來和表單交互
var qs = require('querystring');
以下是node官方舉例:
querystring.parse(str[, sep][, eq][, options])方法
querystring.parse('foo=bar&baz=qux&baz=quux&corge')
// returns { foo: 'bar', baz: ['qux', 'quux'], corge: '' }
// Suppose gbkDecodeURIComponent function already exists,
// it can decode `gbk` encoding string
querystring.parse('w=%D6%D0%CE%C4&foo=bar', null, null,
{ decodeURIComponent: gbkDecodeURIComponent })
// returns { w: '中文', foo: 'bar' }
querystring.stringify(obj[, sep][, eq][, options])方法
querystring.stringify({ foo: 'bar', baz: ['qux', 'quux'], corge: '' })
// returns 'foo=bar&baz=qux&baz=quux&corge='
querystring.stringify({foo: 'bar', baz: 'qux'}, ';', ':')
// returns 'foo:bar;baz:qux'
// Suppose gbkEncodeURIComponent function already exists,
// it can encode string with `gbk` encoding
querystring.stringify({ w: '中文', foo: 'bar' }, null, null,
{ encodeURIComponent: gbkEncodeURIComponent })
// returns 'w=%D6%D0%CE%C4&foo=bar'
注:
linux 下打壓: tar zcvf lilei.tar.gz
linux 下解壓: tar zxvf lilei.tar.gz
作業(yè)
實現(xiàn)一個計算器(頁面, 后臺, +, -, *, /, %)[querystring模塊]