我的學習node.js心得(一)
眾所周知,node.js是目前前端往中高階進階的一項必備技能,之前學習vue2,只是用了他的打包工具webpack,並沒有去深入研究。最近花心思去學習了一下,是我對前端整套流程有了進階的認識。
我學習node是從視訊開始的,大家可以看一下騰訊課堂的一個《Node.js 實戰開發:部落格系統》免費的,一共54節課,花了快兩週跟著練習消化。視訊地址:點這裡.
node是一項可以操縱系統的一種伺服器語言(個人理解),比如去讀取系統裡面的檔案,就可用node內建的fs模組
//如果不是全域性就得引入fs成員 const fs = require("fs"); //fs 核心模組中提供了一個 fs.readFile方法,來讀取指定目錄下的檔案 //fs.resdFile 三個引數 // 1,讀取檔案的路徑 // 2,讀取檔案的編碼格式 // 3,當檔案讀取完成,呼叫這個callback回撥函式來讀取檔案的結果 去讀取D盤node路徑下的aaa文字 fs.readFile("D:/node/aaa.txt", "utf-8", function(error, data) { // 用error來判斷檔案是否讀取成功 if (error){ console.log("讀取檔案失敗,內容是" + error.message); } else{ console.log("讀取檔案成功,內容是" + data); } });
比如去複製一個檔案,就得先去讀取那個檔案,在將內容複製進去
//檔案流複製
const url='D:/node/SICKO MODE.mp3';
//讀取改路徑檔案下得音樂
fs.readFile(url,function(err,data){
if(!err){
console.log(data);
//將名字為資料寫入SICKO MODE.mp3得檔案中
fs.writeFile('SICKO MODE.mp3',data,function(err){
if(!err){
console.log('寫入成功')
}
})
}
})
這樣可以聯絡我們使用和利用模組js得能力。
下一個模組就是http模組,這個可以幫助我們開啟一個服務,在瀏覽器輸入相應埠就可以使用。
//引入http模組
var http = require("http");
//建立服務,埠為8090
http.createServer(function(req,res) {
res.writeHead(200,{
"content-type":"text/plain"
});
//在頁面上返回文字
res.write("Hello NodeJs");
res.end();
}).listen(8090);
http模組中封裝了一個HTTP伺服器和一個簡易的HTTP客戶端:http.Server()用於建立是一個基於事件的HTTP伺服器,而http.request()和http.get()可以作為客戶端向HTTP伺服器發起請求。在這裡使用的createServer()方法返回了一個http.Server物件,text/plain的意思是將檔案設定為純文字格式。
http.ServerResponse類是返回給客戶端的資訊,它有三個重要的方法,用於返回響應頭、響應內容以及結束請求:writeHead(statusCode[, statusMessage][,headers]):向請求的客戶端傳送響應頭,該函式在一個請求中最多呼叫一次,如果不呼叫,則會自動生成一個響應頭write(chunk[,encoding][,callback]):向請求的客戶端傳送響應內容,chunk是一個buffer或者字串,如果chunk是字串,則需要指定編碼方式,預設為utf-8,在end()方法呼叫之前可以多次呼叫end([data][,encoding][,callback]):結束響應,告知客戶端所有傳送已經結束,如果不呼叫這個函式,客戶端將一直處於等待狀態
http.Server最常用的事件是"request",當接收到http請求時觸發。在"request"事件中,傳入回撥函式的引數req和res分別是http.IncomingMessage和http.ServerResponse的例項:http.IncomingMessage類包含了從客戶端發來的http請求資訊,它可以用來訪問響應狀態、訊息頭、以及資料。