Node.js基礎(chǔ)入門之path模塊,url模塊,http模塊使用詳解
經(jīng)過前面四天的學(xué)習(xí),對(duì)Node.js已經(jīng)有了一個(gè)基礎(chǔ)的認(rèn)識(shí),今天繼續(xù)學(xué)習(xí)Node.js網(wǎng)絡(luò)通信編程相關(guān)內(nèi)容,并稍加整理加以分享,如有不足之處,還請(qǐng)指正。
path模塊
Node.js中,提供了一個(gè)path模塊,在這個(gè)模塊中,提供了許多實(shí)用的,可被用來處理與轉(zhuǎn)換文件路徑的方法及屬性。path是一個(gè)系統(tǒng)模塊,不需要單獨(dú)安裝,主要用于格式化或拼接完整路徑。
1. path模塊示例
以path模塊中最常用的是join方法【拼接路徑】為例,如下所示:
var path = require('path'); //拼接路徑:將多個(gè)字符串拼接成一個(gè)完整的路徑 var file = path.join(__dirname,'file1.txt'); console.log("當(dāng)前路徑:"+file);
示例截圖,如下所示:
注意:__dirname是內(nèi)置屬性,表示當(dāng)前程序所在的路徑。
2. path模塊其他方法
path模塊除了join外,還提供了其他方法,如下所示:
var path = require('path'); //拼接路徑:將多個(gè)字符串拼接成一個(gè)完整的路徑 var file = path.join(__dirname,'file1.txt'); console.log("當(dāng)前路徑:"+file); //返回路徑中的文件夾部分 var dirname = path.dirname(file); //返回路徑中的文件部分,包含文件名和擴(kuò)展名 var filename = path.basename(file); //返回路徑中的擴(kuò)展名 var extname = path.extname(file); //解析路徑對(duì)象,返回一個(gè)對(duì)象 var p = path.parse(file); console.log("dirname:"+dirname); console.log("filename:"+filename); console.log("extname:"+extname); console.log("parse解析后的對(duì)象:"); console.log(p)
示例截圖,如下所示:
url模塊
URL模塊主要提供對(duì)URL(Uniform Resource Locator,統(tǒng)一資源定位器)的相關(guān)操作的屬性和方法。
網(wǎng)址字符串是包含多個(gè)有意義組件的結(jié)構(gòu)化字符串。 解析時(shí),將返回包含每個(gè)組件的屬性的網(wǎng)址對(duì)象。
url
模塊提供了兩種用于處理網(wǎng)址的 API:一種是 Node.js 特定的舊版 API,一種是實(shí)現(xiàn)了與 Web 瀏覽器使用的相同的 WHATWG 網(wǎng)址標(biāo)準(zhǔn)的新版 API。
下面提供了 WHATWG 和 舊版 API 之間的比較。
使用 WHATWG API 解析網(wǎng)址字符串:
const myURL = new URL('https://user:pass@sub.example.com:8080/p/a/t/h?query=string#hash');
使用舊版 API 解析網(wǎng)址字符串:
import url from 'url'; const myURL = url.parse('https://user:pass@sub.example.com:8080/p/a/t/h?query=string#hash');
1. 舊的解析方法
舊的解析方法,直接采用模塊的parse函數(shù)即可,如下所示:
var url = require('url'); var u="https://www.cnblogs.com/hsiang/p/15182972.html"; //舊的解析方法 var obj = url.parse(u); console.log("解析后的對(duì)象:"); console.log(obj);
解析示例截圖,如下所示:
注意:返回的obj是一個(gè)對(duì)象,通過obj.屬性名,可以獲取更加詳細(xì)的內(nèi)容。
2. 新的解析方法
//新的解析方法【ES6寫法】 const {URL} = require('url'); var u="https://www.cnblogs.com/hsiang/p/15182972.html"; const obj=new URL(u); console.log("新的解析方法"); console.log(obj);
示例截圖,如下所示:
ES5寫法,如下所示:
//新的解析方法【ES5寫法】 var url = require('url'); var u="https://www.cnblogs.com/hsiang/p/15182972.html"; var obj =new url.URL(u); console.log("新的解析方法"); console.log(obj);
注意:通過對(duì)比,發(fā)現(xiàn)新舊兩種方式解析出來的結(jié)果大體上相同,僅存細(xì)微差異,具體可參考上述新舊對(duì)比截圖。
http模塊
網(wǎng)絡(luò)作為信息傳輸,接收,共享的虛擬平臺(tái),通過它將各個(gè)點(diǎn),面,體的信息聯(lián)系到一起,從而實(shí)現(xiàn)這些資源的共享。網(wǎng)絡(luò)傳輸數(shù)據(jù)有一定的規(guī)則,這些規(guī)則稱之為協(xié)議,http協(xié)議就是規(guī)則的一種,而且是使用最頻繁的一種網(wǎng)絡(luò)傳輸協(xié)議。
1. 什么是HTTP協(xié)議?
超文本傳輸協(xié)議(Hyper Text Transfer Protocol,HTTP)是一個(gè)簡單的請(qǐng)求-響應(yīng)協(xié)議,它通常運(yùn)行在TCP之上。它指定了客戶端可能發(fā)送給服務(wù)器什么樣的消息以及得到什么樣的響應(yīng)。請(qǐng)求和響應(yīng)消息的頭以ASCII形式給出;而消息內(nèi)容則具有一個(gè)類似MIME的格式。HTTP協(xié)議定義了數(shù)據(jù)在瀏覽器和服務(wù)器之間網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)格式和過程。
2. HTTP協(xié)議約束的細(xì)節(jié)
HTTTP協(xié)議定義了瀏覽器和服務(wù)器之間交互數(shù)據(jù)的格式及過程。具體如下所示:
- 定義了瀏覽器以什么格式向服務(wù)器發(fā)送請(qǐng)求;
- 定義了服務(wù)器以什么格式解析瀏覽器發(fā)送過來的數(shù)據(jù);
- 定義了服務(wù)器以什么格式響應(yīng)數(shù)據(jù)給瀏覽器;
- 定義了瀏覽器已什么格式解析服務(wù)器響應(yīng)的數(shù)據(jù);
3. HTTP請(qǐng)求響應(yīng)過程
以瀏覽一次網(wǎng)頁為例,請(qǐng)求響應(yīng)過程如下所示:
4. http模塊get方法
因?yàn)榫W(wǎng)絡(luò)中的請(qǐng)求,大部分都是get方式,且不帶請(qǐng)求體,所以Node.js的http模塊提供了便捷方法。如下所示:
var http=require('http'); var fs = require('fs'); http.get('http://www.itsource.cn',function(res){ //res是一個(gè)IncomingMessage對(duì)象 //console.log(res); var stream = fs.createWriteStream('./a.html'); //res是流對(duì)象,可以監(jiān)聽data事件 res.on('data',function(data){ console.log(data.toString()); stream.write(data); }); res.on('end',function(){ stream.end(); console.log('下載成功'); }); //或者采用管道 //res.pipe(stream); });
上述示例采用get方法獲取文件內(nèi)容,并保存文件內(nèi)容到文件中。示例結(jié)果如下:
到此這篇關(guān)于Node.js基礎(chǔ)入門之path模塊,url模塊,http模塊使用詳解的文章就介紹到這了,更多相關(guān)Node.js path url http內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Node.js使用http模塊實(shí)現(xiàn)后臺(tái)服務(wù)器流程解析
- Node.js?搭建后端服務(wù)器內(nèi)置模塊(?http+url+querystring?的使用)
- 基于Node.js的http模塊搭建HTTP服務(wù)器
- node.js使用http模塊創(chuàng)建服務(wù)器和客戶端完整示例
- Node.js進(jìn)階之核心模塊https入門
- node.js中http模塊和url模塊的簡單介紹
- node.js 核心http模塊,起一個(gè)服務(wù)器,返回一個(gè)頁面的實(shí)例
- Node.js中Request模塊處理HTTP協(xié)議請(qǐng)求的基本使用教程
- Node.js 中 http 模塊的深度剖析與實(shí)戰(zhàn)應(yīng)用小結(jié)
相關(guān)文章
詳解IWinter 一個(gè)路由轉(zhuǎn)控制器的 Nodejs 庫
本篇文章主要介紹了詳解IWinter 一個(gè)路由轉(zhuǎn)控制器的 Nodejs 庫,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-11-11node連接MySQL數(shù)據(jù)庫的3種方式總結(jié)
現(xiàn)在前端基本上都會(huì)用一些NodeJs,想必也想自己寫一些API或者個(gè)人博客的后臺(tái)系統(tǒng),這些就離不開連接數(shù)據(jù)庫的問題,下面這篇文章主要給大家介紹了關(guān)于node連接MySQL數(shù)據(jù)庫的3種方式,需要的朋友可以參考下2022-08-08基于node簡單實(shí)現(xiàn)RSA加解密的方法步驟
這篇文章主要介紹了基于node簡單實(shí)現(xiàn)RSA加解密的方法步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-03-03Node.js實(shí)現(xiàn)前端后端數(shù)據(jù)傳輸加密解密
這篇文章主要介紹了Node.js實(shí)現(xiàn)前端后端數(shù)據(jù)傳輸加密解密,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-08-08Node.js?中的?module.exports?與?exports區(qū)別介紹
這篇文章主要介紹了Node.js中的module.exports與exports區(qū)別介紹,每個(gè)模塊中都有module對(duì)象,存放了當(dāng)前模塊相關(guān)的信息,更多相關(guān)內(nèi)容需要的朋友可以參考一下2022-09-09