常用的內(nèi)置模塊(path,fs碱茁,url裸卫,querystring,)
Node.js中提供了一些原生的模塊纽竣,我們稱之為內(nèi)置模塊墓贿。此外,也可以通過NPM命令安裝第三方模塊,安裝完畢后使用方式和內(nèi)置模塊沒有什么不同募壕。
Node.js中的原生模塊直接通過require就能獲得,參考Node.js API文檔來使用這些原生模塊语盈。
fs模塊(主要是操作文件和文件夾)
fs
模塊以 POSIX 標準函數(shù)的方式提供了與文件系統(tǒng)進行交互的API舱馅,fs中的每個方法都分同步和異步兩種方式調(diào)用。通過fs模塊可以獲取一個目錄結(jié)構(gòu)刀荒,及其子目錄或目錄樹下文件的特征代嗤,甚至可以讀寫、復(fù)制或者刪除文件缠借。
操作文件:
在.js的文件中可以提前引入模塊和封裝好的回調(diào)函數(shù)
var fs=require('fs')
var path=require('path')
const handleErr=function(str){
return function(err){
console.log(err?str+'失敗!':str+'成功!')
}
}
創(chuàng)建文件:
fs.writeFile('文件名', '內(nèi)容', handleError('創(chuàng)建文件'))
刪除文件:
此處應(yīng)注意只能刪除空的文件干毅,
fs.unlink('文件名', handleError('刪除文件'))
修改文件:
fs.writeFile或者fs.appendFile
重命名文件:
fs.rename('文件名', '新名字', handleError('重命名成功'))
讀取文件:
fs.readFile(path.resolve('文件路徑'), { encoding: 'utf8'/*編碼格式*/ }, function (err, data) {
if (err) {
console.error(err)
}
console.log(data)
})
操作目錄:
創(chuàng)建目錄:
fs.mkdir(path.resolve('目錄名'), handleError('創(chuàng)建目錄'))
刪除目錄:
fs.rmdir(path.resolve('目錄名'), handleError('刪除目錄'))
重命名目錄:
fs.rename(path.resolve('目錄名'),path.resolve('新目錄名'), handleError('重命名目錄'))
查找目錄的子目錄:
fs.rmdir(path.resolve('dist'), handleError('刪除目錄'))
fs.readdir(path.resolve(''))
利用刪除目錄和遞歸進行目錄的刪除:
function removeDirRecusily(dirPath) {
//查找目錄是否存在
try {
//如果當前的代碼報錯,會把錯誤拋出泼返,繼續(xù)執(zhí)行后面的代碼
fs.accessSync(dirPath)//判斷dirPath是否是一個空的目錄
const files = fs.readdirSync(dirPath, { withFileTypes: true })//輸出的是對象格式硝逢,能夠區(qū)分文件和目錄
if (files.length === 0) {
fs.rmdirSync(dirPath)//判斷如果是空目錄直接刪除
} else {
//遍歷目錄
files.forEach(function (file) {
var filePath = path.resolve(dirPath, file.name)
if (file.isFile()) {
//如果是文件的話,就直接刪除
fs.unlinkSync(filePath)
} else if (file.isDirectory()) {
//遞歸刪除內(nèi)部的子目錄
removeDirRecusily(filePath)
}
})
fs.rmdirSync(dirPath)
}
} catch (e) {
console.error(e)
}
}
path內(nèi)置模塊(主要是提供操作路徑與獲取路徑的方法)
在.js文件中提前引入依賴:
var path = require('path')
console.log(__dirname)
console.log(__filename)
獲取完整文件路徑的文件名字:
console.log(path.basename('/Users/Documents/xiaoming/xiaomingming/新建.txt'))
獲取文件所在的完整路徑:
console.log(path.dirname('/Users/Documents/xiaoming/xiaomingming/新建.txt'))
文件的擴展名:
console.log(path.extname(__filename))
join用來拼接路徑:
console.log(path.join('Documents', '/users', 'xiaoming', '..', './', '新建.tx'))
將路徑或路徑片段的序列解析為絕對路徑。:
console.log(path.resolve('Documents', '/users', 'xiaoming', '..', './', '新建.tx'))
規(guī)則:
1. 給定的路徑序列從右到左進行處理绅喉,每個后續(xù)的 path
前置渠鸽,直到構(gòu)造出一個絕對路徑。
2. 如果在處理完所有給定的 path
片段之后還未生成絕對路徑柴罐,則再加上當前工作目錄徽缚。
3. 生成的路徑已規(guī)范化,并且除非將路徑解析為根目錄革屠,否則將刪除尾部斜杠凿试。
url模塊(url操作方法)
在.js文件中提前引入依賴
var url = require('url')
url模塊主要處理URL(統(tǒng)一資源定位符),URL的格式構(gòu)成:
協(xié)議+認證+主機+端口+路徑+查詢字符串+哈希值似芝。
url模塊主要提供了兩個模塊:
url.format()
:負責把一個url的json對象轉(zhuǎn)換成合法的url地址那婉。url.parse()
:負責把一個url地址轉(zhuǎn)換成一個url的json對象。
var urlString = url.format({
protocol: 'https',
hostname: 'm.taobao.com',
pathname: '/iphone/11dp',
query: {
page: 1,
format: 'json'
},
hash: 'fddfsdf'
})
// 把 url obj 轉(zhuǎn)換成 url string
console.log(url.parse(urlString))
// resolve可以拼湊路徑
console.log(url.resolve(urlString, '/多普達/dopod.js'))
querystring模塊(主要是查詢url后面的字符串)
在.js文件中提前引入依賴
var querystring = require('querystring')
通過url.parse轉(zhuǎn)換的url對象中的query對象是一個字符串国觉,如果想進一步拿到查詢字符串的鍵值對吧恃,需要再通過querystring來轉(zhuǎn)換。
querystring.stringify()
:可以把查詢字符串對象轉(zhuǎn)換成字符串麻诀。querystring.stringify
默認會對非ASCII字符進行百分比編碼痕寓,即內(nèi)部調(diào)用querystring.escape()
方法。
querystring.parse()
:可以把查詢字符串轉(zhuǎn)換成對象蝇闭。querystring.parse
默認會對經(jīng)過百分比編碼的字符進行解碼操作呻率,即內(nèi)部調(diào)用了querystring.unescape()
。
// 把查詢字符串轉(zhuǎn)換成對象
console.log(querystring.parse('type=iphone11&num=70&ipod=true'))
var qs = querystring.stringify({
type: 'iphone',
num: 140,
ipod: true,
itunes: ' sss '
}, '贈送', '!==', { encodeURIComponent: true })//把特殊的字符轉(zhuǎn)為%形式的
console.log(qs)
Express
搭建一個Express的服務(wù)器
- 創(chuàng)建一個目錄express-demo
-
npm init - y
把express-demo初始化成一個npm工程; - 創(chuàng)建一個app.js
-
npm install --save express
安裝express依賴; - 在app.js里面編寫:
var express = require('express')
var app = express()
// 接收來自客戶端訪問網(wǎng)站根路徑的請求
app.get('/', function (req, res, next) {
res.send('測試信息接受成功呻引!')
})
// 監(jiān)聽3000端口,啟動服務(wù)器
app.listen(3000, function (err) {
if (err) {
console.error(err)
} else {
console.log('express服務(wù)器啟動成功')
}
})
完成后在終端運行一下礼仗,在瀏覽器輸入自己的ip地址后面加上:3000即可訪問,簡單的服務(wù)器完成