1. 程式人生 > >我的學習node.js心得(一)

我的學習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請求資訊,它可以用來訪問響應狀態、訊息頭、以及資料。