node.js中fs\path\http模塊的使用方法詳解
先上本文的核心圖

一、node.js概念與作用
1.概念:
node.js 是一種 基于谷歌V8引擎 的 運(yùn)行環(huán)境,V8是Google發(fā)布的開源JavaScript引擎,本身是用于Chrome瀏覽器的js解釋部分
2.作用:
- 具有超強(qiáng)的高并發(fā)能力,能夠?qū)崿F(xiàn)高性能服務(wù)器
- Node 包管理工具(node package manager,NPM)提供了數(shù)十萬(wàn)個(gè)可重用的工具包。它還提供了一流的依賴解決方案,可實(shí)現(xiàn)自動(dòng)化工具鏈構(gòu)建。(說(shuō)白了node就是便于我們模塊化的開發(fā),需要啥就導(dǎo)入啥進(jìn)去,不需要把整個(gè)文件都導(dǎo)入到我們的文件中)
二、模塊發(fā)開發(fā)三大板塊
1.模塊化開發(fā)介紹
把一個(gè)大文件拆分成很多個(gè)小文件,然后使用特定的語(yǔ)法組合在一起,這種開發(fā)方式叫做模塊化開發(fā)
模塊化開發(fā)有啥好處?
- 按需引入,節(jié)省資源
- 避免變量污染
- 業(yè)務(wù)分離,便于維護(hù)
2.常見三大模塊
1.fs 讀寫模塊
writeFile()的使用
①導(dǎo)入內(nèi)置模塊
const fs = require('fs')②使用模塊
第一個(gè)參數(shù)path : 文件路徑
第一個(gè)參數(shù)encoding : 文件編碼 默認(rèn)值二進(jìn)制. 中文: utf8
第三個(gè)參數(shù)callback : (err,data)=>{ err:錯(cuò)誤信息 data:讀取的數(shù)據(jù) }
fs.readFile('./data/aaa.txt','utf-8',(err,data)=>{
if(err){
console.log(err);
throw err
}else{
console.log(data);
}
})③在集成終端查看

輸入node 文件名(可按tab快速補(bǔ)齊)

writeFile()的使用
①導(dǎo)入內(nèi)置模塊
const fs = require('fs')②使用模塊
第一個(gè)參數(shù): 文件路徑
第二個(gè)參數(shù): 要寫入的數(shù)據(jù)
第三個(gè)參數(shù): 文件編碼 默認(rèn)是數(shù)據(jù)編碼
第四個(gè)參數(shù): (err)=>{ }
fs.writeFile('./data/bbb.txt','年少莫問前程,天涯亦有歸途',err=>{
if( err ){
throw err
}else{
console.log('文件寫入成功')
}
})③在集成終端查看


點(diǎn)開bbb.txt查看內(nèi)容

2.path 路徑模塊
①.導(dǎo)入模塊
const path = require('path')②使用模快-有四種方法
(1) 獲取一個(gè)文件的拓展名
/* 不關(guān)心此路徑文件在不在, 就是處理這個(gè)字符串。 獲取.后面的部分可以知道這個(gè)文件格式 */
console.log( path.extname('index.html') )// .html
console.log( path.extname('aaa.bbb') )// .bbb
console.log(path.extname('javaScript.js'));//js集成終端查看

(2)拼接相對(duì)路徑, 使用join方法
/* 把多個(gè)字符串按照路徑的方式拼接起來(lái) */
console.log( path.join('aaa','bbb') )// aaa/bbb
console.log(path.join('a,b,c'));//a,b,c集成終端查看

(3) 拼接絕對(duì)路徑
/* 默認(rèn)從磁盤根目錄開始拼接出完整的路徑 */
console.log( path.resolve('/aa','bb','cc') )// 文件夾絕對(duì)路徑/aa/bb/cc集成終端查看

(4)獲取當(dāng)前文件所在的絕對(duì)路徑
console.log( __dirname )// 可獲取文件夾絕對(duì)路徑 console.log( path.join(__dirname , 'aaa','bbb') )
集成終端查看

3.http 搭建服務(wù)器模塊
整體步驟:
①導(dǎo)入http模塊
const http = require('http')②創(chuàng)建服務(wù)器
const app = http.createServer( (req,res)=>{
// (1) req : request 請(qǐng)求報(bào)文
console.log( decodeURI(req.url) )
// console.log( req.url, decodeURI(req.url) )
// (2)處理
// (3)res : response 響應(yīng)報(bào)文
} )③開啟http服務(wù)器
// 3.開啟服務(wù)器
/*
第一個(gè)參數(shù) port : 端口號(hào)
一個(gè)電腦有很多個(gè)軟件,一個(gè)軟件對(duì)應(yīng)一個(gè)端口號(hào). 范圍[0,65535]
第二個(gè)參數(shù) hostname : 主機(jī)名(ip地址)
網(wǎng)線地址: 192.168.81.34 cmd命令:ipconfig
本機(jī)地址: 127.0.0.1 (獲取當(dāng)前網(wǎng)線的ip地址,相當(dāng)于js中的self)
第三個(gè)參數(shù) callback : ()=>{}
*/
app.listen(3088,'192.168.74.149',()=>{
console.log('服務(wù)器開啟成功')
})
之后進(jìn)瀏覽器在地址欄輸入,可查看到服務(wù)器接受到了666666
(查看本機(jī)IP地址,在cmd中輸入ipconfig即可)

方法1:在服務(wù)器中根據(jù)請(qǐng)求不同處理不同的信息
const http =require('http')
const app =http.createServer((req,res)=>{
if( req.url === '/index' ){
// 3.response : 響應(yīng)報(bào)文
// 設(shè)置響應(yīng)頭 : 服務(wù)器告訴瀏覽器我給你的數(shù)據(jù)是什么格式
res.writeHead(200,{
'Content-Type':'text/html;chartset=utf8'
})
res.end('index')//響應(yīng)體
}else if( req.url === '/login' ){
res.writeHead(200,{
'Content-Type':'text/json;chartset=utf8'
})
// 后臺(tái)只能響應(yīng) 字符串或二進(jìn)制, 如果你想要響應(yīng)其他數(shù)據(jù)需要轉(zhuǎn)成json
// js=>json : JSON.stringify( js對(duì)象 )
res.end( JSON.stringify( {name:'初映',age:22} ) )
}else{
res.end('Not Found' + req.url )
}
})
app.listen(3088,'192.168.74.149',()=>{
console.log('服務(wù)器開啟成功')
})請(qǐng)求地址是login。res.end(瀏覽器響應(yīng))

請(qǐng)求地址是index的時(shí)候。res.end(瀏覽器響應(yīng))

當(dāng)服務(wù)器收到了錯(cuò)誤的請(qǐng)求地址。res.end(瀏覽器響應(yīng))

方法2:nodejs響應(yīng)客戶端html文件
①導(dǎo)入需要的模塊
// 1.導(dǎo)入
const http =require('http')
const fs =require('fs')
const path =require('path')②創(chuàng)建我們的服務(wù)器
// 2.創(chuàng)建
const app = http.createServer((req,res)=>{
if(req.url==='/'){
// 響應(yīng)index.html代碼
fs.readFile(path.join(__dirname,'index.html'),(err,data)=>{
if (err) {
throw err
}else{
res.end(data)
}
})}}
)③開啟服務(wù)器
// 3.開啟
app.listen(3000,()=>{
console.log('服務(wù)器開啟成功')
})網(wǎng)頁(yè)地址欄搜索

總結(jié)
到此這篇關(guān)于node.js中fs\path\http模塊使用的文章就介紹到這了,更多相關(guān)node.js fs\path\http模塊使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
對(duì)mac下nodejs 更新到最新版本的最新方法(推薦)
今天小編就為大家分享一篇對(duì)mac下nodejs 更新到最新版本的最新方法(推薦),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05
解決使用node命令提示:'node'不是內(nèi)部或外部命令,也不是可運(yùn)行的程序
最近在工作中遇到了個(gè)常見的問題,分享給大家,這篇文章主要給大家介紹了關(guān)于如何解決使用node命令提示:'node'不是內(nèi)部或外部命令,也不是可運(yùn)行的程序的相關(guān)資料,需要的朋友可以參考下2023-02-02
node.js中的http.createClient方法使用說(shuō)明
這篇文章主要介紹了node.js中的http.createClient方法使用說(shuō)明,本文介紹了http.createClient的方法說(shuō)明、語(yǔ)法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下2014-12-12
教你在heroku云平臺(tái)上部署Node.js應(yīng)用
heroku是構(gòu)建在AWS之上的一個(gè)PaaS云平臺(tái),現(xiàn)在支持Ruby, Node.js, Python, Java, 和 PHP,代碼的部署是通過(guò)git進(jìn)行,編譯和運(yùn)行都是自動(dòng)的。2014-07-07
Nodejs極簡(jiǎn)入門教程(二):定時(shí)器
這篇文章主要介紹了Nodejs極簡(jiǎn)入門教程(二):定時(shí)器,本文講解了setTimeout、setInterval、setImmediate及process.nextTick等內(nèi)容,需要的朋友可以參考下2014-10-10
node.js多個(gè)異步過(guò)程中判斷執(zhí)行是否完成的解決方案
這篇文章主要給大家介紹了關(guān)于node.js多個(gè)異步過(guò)程中判斷執(zhí)行是否完成的幾種解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-12-12
node.js中的buffer.Buffer.isBuffer方法使用說(shuō)明
這篇文章主要介紹了node.js中的buffer.Buffer.isBuffer方法使用說(shuō)明,本文介紹了buffer.Buffer.isBuffer的方法說(shuō)明、語(yǔ)法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下2014-12-12
Nodejs異步回調(diào)之異常處理實(shí)例分析
這篇文章主要介紹了Nodejs異步回調(diào)之異常處理,結(jié)合實(shí)例形式分析了nodejs基于中間件進(jìn)行異步回調(diào)異常處理過(guò)程出現(xiàn)的問題與相應(yīng)的解決方法,需要的朋友可以參考下2018-06-06
使用nodejs搭建一個(gè)簡(jiǎn)易HTTP服務(wù)的實(shí)現(xiàn)示例
本文主要介紹了使用nodejs搭建一個(gè)簡(jiǎn)易HTTP服務(wù)的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05
nodejs body-parser 解析post數(shù)據(jù)實(shí)例
下面小編就為大家?guī)?lái)一篇nodejs body-parser 解析post數(shù)據(jù)實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-07-07

