nodejs主要模組介紹

螞蟻小編發表於2017-04-14

本章節簡單介紹一下nodejs的主要模組,需要的朋友可以做一下參考。

一.http模組:

主要類:

[JavaScript] 純文字檢視 複製程式碼
Class: http.Server

var server = http.createServer();

server就是http.Server類的例項。

常用的方法有:

[JavaScript] 純文字檢視 複製程式碼
server.listen(port, [hostname], [backlog], [callback])
[JavaScript] 純文字檢視 複製程式碼
Class: http.ServerResponse

var server = http.createServer(function(req,res){ });

res就是 http.ServerResponse類的例項。

[JavaScript] 純文字檢視 複製程式碼
Class: http.IncomingMessage

var server = http.createServer(function(req,res){ });

req就是http.IncomingMessage類的例項。

二.server物件:

可以使用on語法監聽某個事件。

[JavaScript] 純文字檢視 複製程式碼
var http = require('http');
var server = http.createServer();
server.on('request',function ( req,res ) {
    res.setHeader('Content-type','text/html;charset=utf8');
    if ( req.url == '/' ){
        res.end('index');
    } else {
        res.end('404');
    }
});
server.listen(8080,'localhost');

三.req物件:

每次上行請求頭物件

[JavaScript] 純文字檢視 複製程式碼
req.headers HTTP上行請求頭

a:3:{s:3:\"pic\";s:43:\"portal/201704/14/141400zrub507bn8rn1in7.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

[JavaScript] 純文字檢視 複製程式碼
req.httpVersion    http請求的版本。現在基本上都是1.1
req.method        “GET”、”POST”就是請求的型別
req.url  使用者請求的網址

四.res物件:

每次下行響應物件

[JavaScript] 純文字檢視 複製程式碼
res.end()//每次都要有這個語句,表示這次的傳送已經結束引數必須是string、buffer(圖片、檔案)。
res.write()//就是寫HTTP下行請求的body
res.setHeader()//設定返回的報文頭部
res.statusCode = 404;//設定狀態碼
res.writeHead()//和res.setHeader差不多
res.writeHead(288 , {"Content-Type":"text/plain"});

五.url模組:

作用內建模組,解析url,解析地址。 分析和解析 URL 的工具

url.parse()就是用來解析網址,接收一個字串,返回一個JSON:

[JavaScript] 純文字檢視 複製程式碼
var obj = url.parse("http://localhost:8080/a/b/c/1.html?name=ting&age=21");

a:3:{s:3:\"pic\";s:43:\"portal/201704/14/141529feegu4444k440mll.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

url.parse方法第二個引數如果是true,那麼返回的物件中的query就是json

query: { xingming: 'xiaoming', age: '12' }

六.querystring模組:

querystring模組是專門用來解析GET請求的查詢字串的。

console.log( qs.parse('name=ting&age=21&hobby=run&hobby=sing') );

返回:{ name: 'ting', age: '21', hobby: [ 'run', 'sing' ] }

七.path模組:

處理和轉換檔案路徑的工具集,專門處理路徑

path.basename() :返回路徑中的檔名

path.dirname():返回路徑中的資料夾名

path.extname():返回路徑的擴充名

[JavaScript] 純文字檢視 複製程式碼
console.log( path.basename('/xixi/haha/a.html') );  //a.html
console.log( path.extname('/xixi/haha/a.html') );  //.html
console.log( path.dirname('/xixi/haha/a.html') );  ///xixi/haha

八.fs模組:

檔案處理模組,可以讀檔案,也可以寫檔案

[JavaScript] 純文字檢視 複製程式碼
fs.readFile();  //讀取檔案內容   
fs.readDir(); //讀取資料夾名
fs.appendFilr(); //追加檔案
fs.writeFile(); //寫入檔案(覆蓋原有的):

九.自定義模組:

每一個js檔案中可以看成是一個小小的模組

require('./test/a.js');        

    每個js檔案就是一個閉包,宣告的函式、變數只在這個js檔案內部有定義。

    A require了 B , 那麼B裡面的所有路徑都要按照A的路徑寫。

如果需要使用到其它檔案中的變數,使用exports暴露出去。

    exports.*** = ***;

testA .js

    var a = 100;

    exports.a = a;

主檔案

    var testA  = requrie('./testA.js');    

    console.log( testA.a ); 

暴露唯一的介面,module.exports ,一般使用到建構函式。

如果只有寫檔案載入,會去預設資料夾下:node_modules 尋找是否有當前需要載入的檔案

    require('test.js');     

也可以直接省略路徑、省略檔名,只寫資料夾名

    require('aa');  

    實際上引用的是node_moduels資料夾裡面的aaa資料夾裡面的index.js檔案。    

    一般第三方模組,都放入node_modules資料夾中。

package.json:

[JavaScript] 純文字檢視 複製程式碼
配置資訊:
{
  "name": "my_package",   //專案名字
  "version": "1.0.0",    //版本號
  "main": "index.js",   //入口檔案
  "keywords": [],       //關鍵詞,就是搜尋什麼npm上能夠顯示你
 "author": "ag_dubs",   //作者
  "license": "ISC",      //版權協議
  "repository": {             //程式碼託管倉庫,這個會自動生成一個連線
    "type": "git",
    "url": "https://github.com/ashleygwilliams/my_package.git"
  },
  "bugs": {               //如果發現bug應該交給誰
    "url": "https://github.com/ashleygwilliams/my_package/issues"
  },
   "dependencies": {
    "underscore": "*",
    "date-format" : "0.0.2"
  },
   "homepage": "https://github.com/ashleygwilliams/my_package"   //個人網站
}  
 
最重要的資訊是:依賴
 {
  "dependencies": {
    "underscore": "*",
    "date-format" : "^0.0.2"
 }
}

formidable:

[JavaScript] 純文字檢視 複製程式碼
formidable 語法
var form = new formidable.IncomingForm();
    //設定上傳路徑
    form.uploadDir = "./uploads";
     form.parse(req, function(err, fields, files) {
        //fields是普通域,就是普通的文字框、單選按鈕、核取按鈕、textarea都存在這個物件裡面
        //files是上傳的檔案資訊
        var newname = df('yyyyMMddhhmmssSSS', new Date());
        fs.rename(files.touxiang.path , "./uploads/" + newname + ".jpg",function(err){
            if(err){
                res.end("error");
                return;
            }
        });
        res.end("ok");
    });

相關文章