path模塊(路徑模塊)
? ? ? ? + path.join()
? ? ? ? ? ? == 將所有給定的path片段鏈接在一起
? ? ? ? ? ? == 規(guī)范化生成的路徑
? ? ? ? ? ? == 語法: path.join('/目錄1','目錄2','目錄3/目錄4')
? ? ? ? ? ? == 返回值: '/目錄1/目錄2/目錄3/目錄4'
? ? ? ? ? ? == 返回值不一定是絕對(duì)路徑
? ? ? ? + path.resolve()
? ? ? ? ? ? == 同path.join()
? ? ? ? ? ? == 區(qū)別: 會(huì)將路徑或路徑片段的序列解析成絕對(duì)路徑
url.parse
? ? ? ? == 作用:把URL解析成對(duì)象
? ? ? ? == 語法:url.parse(urlString,parseQueryString,slashesDenoteHost)
? ? ? ? ? ? == urlString:表示url地址
? ? ? ? ? ? == parseQueryString:是一個(gè)布爾值,如果為true,會(huì)解析查詢字符串
? ? ? ? ? ? == slashesDenoteHost:是一個(gè)布爾值,如果為true,表示//后面讹剔,/前面是主機(jī)名(完整地址設(shè)不設(shè)置關(guān)系不大)
? ? url.format
? ? ? ? == 作用:把url對(duì)象解析成url地址字符串
? ? ? ? == 語法: url.format(url對(duì)象)
? ? ? ? == 返回值: url地址字符串
? ? url.resolve
? ? ? ? == 作用: 把兩端url片段,組合成一個(gè)完整的url
? ? ? ? == 返回值: url地址字符串
querystring模塊
? ? ? ? == 對(duì)查詢字符粗執(zhí)行更加強(qiáng)大的解析
? ? querystring.stringify()
? ? ? ? == 作用:把對(duì)象變成查詢字符串
? ? ? ? == 語法: querystring.stringify(要轉(zhuǎn)換的對(duì)象[,自定義分隔符,自定義鍵值對(duì)之間的鏈接符])
? ? ? ? ? ? == 默認(rèn)是用&作為分隔符惊橱,鍵值用=鏈接
? ? ? ? ? ? == 返回值:查詢字符串
? ? querystring.parse()
? ? ? ? == querystring.stringify的逆方法
? ? ? ? == 語法:querystring.parse('查詢字符串'[,自定義分隔符,自定義鍵值對(duì)之間的鏈接符])
? ? ? ? == 返回值:對(duì)象
? ? querystring.escape()
? ? ? ? == 把字符串進(jìn)行url編碼
? ? querystring.unescape()
? ? ? ? == 對(duì)url進(jìn)行解碼
import * as fs from "fs";
// 獲取文件信息
fs.stat('./07fs_stat.mjs',function(err,stats){
? ? // 獲取完成文件信息以后執(zhí)行
? ? if(!err){
? ? ? ? console.log(stats)
? ? ? ? console.log(stats.isFile());//判斷是否是一個(gè)文件
? ? ? ? console.log(stats.isDirectory());//判斷是否是一個(gè)文件夾
? ? }
})
const fs = require('fs');
fs.mkdir('abc',function(err){
? ? // 當(dāng)文件夾創(chuàng)建完成以后執(zhí)行這個(gè)函數(shù)
? ? if(!err){
? ? ? ? console.log('目錄創(chuàng)建成功')
? ? }
})
const fs = require('fs');
// 寫入的文件路徑
const filePath = "logs/d.txt";
const text = "寫入文件的內(nèi)容\n";
// 異步 覆寫
// fs.writeFile(filePath,text,function(err){
//? ? if(!err){
//? ? ? ? console.log('文件寫入成功')
//? ? }
// })
// 異步 追加寫入文件
fs.appendFile(filePath,text,function(err){
? ? if(!err){
? ? ? ? console.log('文件寫入成功')
? ? }
})
const fs = require('fs');
const filePath = "logs/d.txt";
// 第一種寫法
fs.readFile(filePath,(err,data)=>{
? ? // 當(dāng)文件讀取完成執(zhí)行該函數(shù)
? ? if(!err){
? ? ? ? console.log(data.toString())
? ? }
})
// 第二種寫法
fs.readFile(filePath,'utf-8',(err,data)=>{
? ? if(!err){
? ? ? ? console.log(data)
? ? }
})
// 讀取文件目錄
fs.readdir('logs',(err,files)=>{
? ? if(!err){
? ? ? ? console.log(files)
? ? }
})
const filePath = "logs/d.txt";
const newPath = 'logs/great.txt';
fs.rename(filePath,newPath,(err)=>{
? ? if(!err){
? ? ? ? console.log('文件名修改成功')
? ? }
})
// 不僅可以修改文件名
// 還可以修改文件夾的名字
// 導(dǎo)入events模塊
const EventEmitter = require('events');
// 創(chuàng)建一個(gè)事件觸發(fā)器
const myEvent = new EventEmitter();
// 定義事件監(jiān)聽器
myEvent.on('many',(data)=>{
? ? console.log('many事件發(fā)生了')
? ? console.log(data)
})
myEvent.once('one',()=>{
? ? console.log('one事件發(fā)生了')
})
// 觸發(fā)事件尤仍?傳遞事件參數(shù)二汛?
myEvent.emit('many')
myEvent.emit('many',{name:'zhangsan'})
myEvent.emit('many',123)
myEvent.emit('one')
myEvent.emit('one')
myEvent.emit('one')
http模塊/https模塊
? ? ? ? + http.request()
? ? ? ? ? ? == 第一步:書寫請(qǐng)求行和請(qǐng)求頭
? ? ? ? ? ? ? ? + 方式一: var req = http.request(url,callback)
? ? ? ? ? ? ? ? + 方式二: var req = http.request(options,callback)
? ? ? ? ? ? == 第二步:書寫請(qǐng)求主體
? ? ? ? ? ? ? ? + req.write()
? ? ? ? ? ? == 第三步:結(jié)束請(qǐng)求
? ? ? ? ? ? ? ? + req.end()
? ? ? ? + http.get()
? ? ? ? ? ? == 語法:同http.request()
? ? ? ? ? ? == 區(qū)別
? ? ? ? ? ? ? ? == 不用設(shè)置method遍烦,是get請(qǐng)求
? ? ? ? ? ? ? ? == 不用書寫req.write() ,get請(qǐng)求沒有請(qǐng)求主體
? ? ? ? ? ? ? ? == 不用調(diào)用req.end() ,會(huì)自動(dòng)調(diào)用
? ? ? ? + http.createServer()
? ? ? ? ? ? == 作用:開啟服務(wù)器俭嘁,二階段講過