node中常用的幾大模塊

       最近一段時間工作不是很忙,抽空學習了一下node相關的知識,打算接下來學習一下VUE框架,配合VUE框架做一個小Demo。下面是小編總結的node中幾個常用的模塊。

Node中的模塊分爲三種類型

  1. node天生自帶的模塊(核心模塊);
  2. node的第三方模塊;通過npm包管理器下載的模塊;
  3. 自定義模塊(即自己寫的js文件;在node環境中運行的js文件,一個文件就是一個模塊)。

模塊導入:

  1. require導入一個模塊;如果是同級的自定義模塊,必須加上‘./’;
  2. 如果文件的後綴名是.js、.json文件,那麼可以省略後綴名;
  3. Require這個方法不在全局的對象global中;
  4. Require導入的模塊會將模塊中的代碼從上到下執行。

模塊導出:(module.exports/exports

  1. 把當前模塊中的內容進行暴露,讓其他模塊可以使用;
  2. Module.exports可以用其他的空間地址進行覆蓋;exports不能用其他的空間覆蓋,只能給其新增屬性;
  3. Module.exports不僅支持空間地址,還支持基本數據類型。

       在每個自定義模塊的最外層,會默認添加一個閉包的函數,這個函數中會接收五個參數:

Exports:將當前模塊的屬性和方法導出;

__dirname:當前文件的父級目錄的絕對路徑;

__filename:當前文件的絕對路徑

(function (module,exports,require,__dirname,__filename){

})()

 

fs模塊

let fs = require(“fs”);      // 引入模塊

fs.readFile(path,option,callback);       // 異步讀取文件

// path:當前讀取文件的路徑

// option:讀出來數據的編碼格式

// callback:回調函數;該函數有兩個參數:第一個參數代表錯誤信息;如果沒有錯誤,那麼默認值是null;第二個參數是讀出來的數據,默認是undefined。

 

Fs.readFileSync(path,option);                              // 同步讀取文件;讀出來的數據默認是一個JSON格式的字符串;可以通過JSON.parse轉成數組

Fs.writeFile(path,data,option,callback);                // 異步寫入文件;當異步寫入成功之後,執行這個回調;新的數據會將老的數據進行覆蓋

Fs.writeFileSync(path,data,option);                      // 同步寫入文件

Fs.appendFile(path,data,option,callback);            // 向文件的末尾追加內容;如果文件路徑不存在,那麼會默認創建一個文件,並且把文件內容寫進去;會默認的調用toString方法,將其他的數據類型轉成字符串

 

http模塊

let http = require(‘http’);

let server = http.createServer(function(req,res){        // 請求一次,該函數執行一次

         // req:請求信息;當客戶端請求時,會把當前請求的信息放入到這個參數中

         // res:響應信息;

         Console.log(req.path);     // 這個是路徑

         Console.log(req.path);     // 這個是參數

         Console.log(req.path);     // 主機域名

         Console.log(req.path);     // 返回當前路徑的參數

         Res.setHeader(‘Content-Type’,’text/plain;charset=utf-8’);    // 設置響應頭,告訴瀏覽器按照什麼類型進行解析和渲染

         res.end(‘this is a string’);           // 1、結束當前請求;2、把後端整理的數據返回給客戶端,數據是字符串或者buffer類型的

}

// 端口號:0-65535; http默認端口號是80,HTTPS默認端口號是443

// 讓當前的服務監聽8000這個端口;當客戶端訪問8000端口時,會觸發當前server的回調函數;

Server.listen(8000,function(){

         // 該回調函數只在端口成功啓動時執行一次,啓動失敗不執行

         Console.log(‘端口啓動成功’);

});

 

Url模塊

let http = require(‘http’);

let url = require(‘url);

http.createServer(function(){

         // url.parse:用來處理路徑的,pathname:當前的路徑;query:參數組合的對象

         let {pathname,query} = url.parse(req.url,true);

}).listen(8000,function(){

         Console.log(‘端口啓動成功’);

})

 

Mime模塊

Let mime = require(‘mime’);

let http = require(‘http’);

let url = require(‘url);

 

http.createServer(function(){

         // url.parse:用來處理路徑的,pathname:當前的路徑;query:參數組合的對象

         let {pathname,query} = url.parse(req.url,true);

         // mime有個getType方法的返回值是當前文件對應的mime類型

        // 解決了不同的文件類型設置不同的響應頭

         res.setHeader(‘Content-Type’,mime.getType(pathname));

}).listen(8000,function(){

         Console.log(‘端口啓動成功’);

})

常見的Mime類型

.html     text/html

.css      text/css

.txt        text/plain

.js         application/javascript

.json     application/json

.png     image/png

.jpg      image/jpeg

 

Express模塊

Let express= require(‘express);

Let app = express();       // express執行相當於創建一個服務

App.get(‘/listen’,function(req,res){

         Res.send(‘get’);

})

App.post(‘/listen2’,function(req,res){

         Res.send(‘post);

})

App.all(‘/listen3’,function(req,res){

         Res.send(‘all);

})

App.listen(8000,function(){

         Console.log(‘端口啓動成功~’);

})

 

Node的優勢

  1. 基於V8引擎運行的環境,速度很快;
  2. 基於事件驅動和非阻塞I/O模型;非阻塞即代表異步;I/O模型:讀寫文件;
  3. 採用異步單線程開發;
  4. Npm包管理器,全球最大的開源生態系統

 

Node的優點

  1. 高性能:因爲避免了大量線程切換的開銷;當大負荷的情況下,內存消耗很少;一般用於做中間層;用來緩衝大量的請求給服務器帶來的壓力;
  2. Node的單線程,底層是多線程的;採用非阻塞I/O操作;
  3. Node的單線程保證了線程的絕對安全,避免了多線程改變同一個變量造成的線程崩潰

 

Node的缺點

     如果其中一個請求發生錯誤,會導致整個服務崩潰。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章