node的模塊
- require:導(dǎo)入一個(gè)模塊
- exports:導(dǎo)出模塊
- module.exports:導(dǎo)出模塊
-
代碼(一)
a.js:
//以函數(shù)的形式進(jìn)行導(dǎo)出,函數(shù)的名稱為li
exports.li = function(){
console.log("heheda!");
}b.js: //因?yàn)閍.js不是核心模塊真椿,所以使用require時(shí)要使用路徑 var mo = require('./a.js'); //直接調(diào)用函數(shù)什荣,此時(shí)的函數(shù)相當(dāng)于mo模塊的方法 mo.li();
-
代碼(二)
a.js:
function li(){
console.log('hello nodejs');
}
//將函數(shù)作為模塊導(dǎo)出
module.exports = li;b.js: //導(dǎo)出模塊 var mo = require('./a.js'); mo(); *tip:所有的exports收集到的屬性和方法,都賦值給了 Module.exports汽馋。當(dāng)然供填,這有個(gè)前提泡一,就是Module.exports本身不具備任何屬性和方法创夜。 如果,Module.exports已經(jīng)具備一些屬性和方法通惫,那么exports收集來(lái)的信息將被忽略轧拄。*
node的文件操作
文件操作使用文件系統(tǒng)模塊fs
-
操作文件有兩種方法,同步操作和異步操作讽膏。
同步讀取:fs.readFileSync()
異步讀戎舴帷:fs.readFile(文件地址府树,文件編碼,回調(diào)函數(shù)(err,data))
eg://導(dǎo)入文件系統(tǒng)模塊 var fs = require('fs'); //讀取文件料按,第一個(gè)參數(shù)是文件路徑奄侠,第二個(gè)參數(shù)是一個(gè)可選參數(shù),是文件的格式载矿,第三個(gè)參數(shù)是回調(diào)函數(shù) //回調(diào)函數(shù)的參數(shù)垄潮,第一個(gè)參數(shù)是錯(cuò)誤對(duì)象,第二個(gè)參數(shù)是讀取文件的內(nèi)容 fs.readFile('1.txt',function(err,data){ //判斷是否出錯(cuò) if(err){ console.log(err); } else { //toString():將對(duì)象轉(zhuǎn)化為字符串 console.log(data.toString()); } });
異步模式下寫入文件的語(yǔ)法格式:
fs.writeFile(filename, data[, options], callback(err))
闷盔;
如果文件存在弯洗,該方法寫入的內(nèi)容會(huì)覆蓋舊的文件內(nèi)容。
node的io鍵盤交互
tip:Readline是node里實(shí)現(xiàn)標(biāo)準(zhǔn)輸入輸出的封裝好的模塊逢勾。通過(guò)這個(gè)模塊我們可以以逐行的方式讀取數(shù)據(jù)流牡整。eg:
//導(dǎo)入readline模塊
var readline = require('readline');
//創(chuàng)建readline接口實(shí)例
var rl = readline.createInterface({
//使用全局對(duì)象process進(jìn)行獲取輸入和輸出的對(duì)象
input:process.stdin,
output:process.stdout
});
//設(shè)置提示符
rl.setPrompt('請(qǐng)輸入一些東西');
rl.prompt();
rl.on('line',(line) => {
var str = line.trim();
console.log(123);
rl.prompt();
}).on('close',() => {
console.log('exit');
process.exit();
});
tip:
- 方法setPromat(promat),就是給每一行設(shè)置一個(gè)提示符
- prompt:就是在等待用戶輸入數(shù)據(jù),以行為單位讀取數(shù)據(jù).
+ 這里又監(jiān)聽(tīng)了’line’ 事件溺拱,因?yàn)閜romat方法調(diào)用一次就只會(huì)讀取一次數(shù)據(jù)逃贝,所以,在這個(gè)方法又調(diào)用了一次promat方法迫摔,這樣就可以繼續(xù)讀取用戶輸入沐扳,從而達(dá)到一種命令行的效果。
node的url判斷渲染模塊
//導(dǎo)入http模塊
var http = require("http");
//導(dǎo)入文件系統(tǒng)模塊
var fs = require("fs");
//導(dǎo)入url模塊
var urlapi = require("url");
//創(chuàng)建http.server實(shí)例
http.createServer(function(req,res){
//解析請(qǐng)求的URL
var url = urlapi.parse(req.url);
console.log(url.pathname);
}).listen(3000);
tip:可以通過(guò)判斷url.pathname的不同渲染不同的頁(yè)面
作業(yè)
nodejs實(shí)現(xiàn)IO鍵盤交互或?yàn)g覽器輸入交互
nodejs判斷url請(qǐng)求渲染2個(gè)簡(jiǎn)單的模板
寫3個(gè)靜態(tài)的頁(yè)面句占,首頁(yè)沪摄,列表頁(yè),詳情頁(yè)