nodejs(上)

events

事件

  • 又稱為發(fā)布訂閱模式

  • 又稱為觀察者模式

  • 當主題對象發(fā)生變化時,會通知所有的觀察者對象,更新自己的行動

獲取時間模塊

var events = require("events");

注冊事件

// 方法1
newDad.addListener("lee",test1);
// 方法2
newDad.on("lee",test2)
// 綁定一次的事件
newDad.once("le",test1);

發(fā)射事件

// 當用addListener或者on綁定事件的時候,同一個事件可以發(fā)射多次
newDad.emit("lee");
newDad.emit("lee");
// 但當用once綁定的事件時,無論發(fā)射幾次該事件,只會執(zhí)行一次
newDad.emit("le");
newDad.emit("le");

刪除事件

//  刪除綁定的事件
newDad.removeListener("lee",test1);
//  刪除所有的事件,既然是刪除所有事件,里面就不需要加參數(shù)
newDad.removeAllListeners();

buffer

buffer:緩存區(qū),暫時存放在內存里的一段數(shù)據(jù)。JS語言自身只有字符串類型,沒有二進制數(shù)據(jù)類型,在處理文件流時,必須使用到二進制數(shù)據(jù),因此在Node.js中,定義一個buffer類,該類用來創(chuàng)建一個專門存放二進制數(shù)據(jù)緩存區(qū)

buffer有一個八位字節(jié)一個字節(jié)元素組成的數(shù)組,單位用16進制表示,取值范圍0-255

創(chuàng)建buffer對象

//創(chuàng)建方式1  隨機創(chuàng)建1個buffer
var buffer = new Buffer(10);
console.log(buffer);
//更改buffer,參數(shù)1 更改的數(shù)  參數(shù)2:從什么位置更該,參數(shù)3,更改到什么位置
buffer.fill(255,2);
console.log(buffer);
buffer.fill(255,2,4);
console.log(buffer);
//創(chuàng)建方式2   通過字符串創(chuàng)建
var buffer = new Buffer("大家好");
console.log(buffer);
//toString() 將buffer格式轉化為中文
console.log(buffer.toString());
//通過數(shù)組創(chuàng)建buffer
var buffer = new Buffer([0xe5,0xa4,0xa7,0xe5,0xae,0xb6,0xe5,0xa5,0xbd]);
//打印出來的buffer 會自動將0x 去掉
console.log(buffer);
console.log(buffer.toString());

path

normalize:規(guī)范化字符串路徑

var path = require("path");
// ./ 是同級   ../ 是上一級
//index.php 前面有一個 ../ 會網上跳一級,所以跳過test1直接到test
var urlPath = "././////test/test1/../index.php";
var newPath = path.normalize(urlPath);
console.log(newPath);

join 將多個參數(shù)值字符串結合成一個路徑字符串

var newPath1 = path.join(__dirname,"test","test1/mycode","index.php");
console.log(newPath1);

resolve:把參數(shù)解析為一個絕對路徑

  • 1.以應用程序的根目錄為起點,根據(jù)參數(shù)的值解析出一個絕對路徑

    1. .當前目錄 ..上級目錄
    1. 普通字符串代表下一級目錄
    1. 如果沒有下一個參數(shù),返回當前路徑
    1. /代表盤符的根目錄
var urlPath1 = "test/test1/test.php";
var newPath2 = path.resolve(urlPath1);
console.log(newPath2);

http

http:超文本傳輸協(xié)議,是互聯(lián)網使用最廣的一個協(xié)議.HTTP模塊主要用于搭建HTTP服務器和客戶端,使用HTTP服務器或客戶端功能必須帶哦用HTTP模塊

var http = require(“http”);var url = require(“url”);//創(chuàng)建服務器//http繼承自tcpvar server = http.createServer(function (req,res) {    var urlstr = req.url;//獲取請求的路徑    var urlMethod = req.method;//獲取請求的方法   //console.log(urlMethod);    
res.end(“hello”);});
server.listen(8080);

HTTP模擬客戶端

//nodejs的服務端
var http = require("http");
var server = http.createServer(function (req,res) {
    var str = "";
    req.on("data",function (chunk) {
        str += chunk;
    })
    req.on("end",function () {
        console.log(str);
    })
    var obj = {
        name:"dr",
        age:19
    }
    res.write(JSON.stringify(obj));
    res.end();
})
server.listen(8989);
//通過nodejs模擬客戶端   客戶端請求服務端
var http = require("http");
var options = {
    method:"post",
    host:"localhost",
    port:8989,
    path:"/"
};
/** request :發(fā)請求
* http.request() 返回一個 http.ClientRequest類的實例。
* ClientRequest實例是一個可寫流對象。
* 如果需要用POST請求上傳一個文件的話,
* 就將其寫入到ClientRequest對象
**/
var request = http.request(options,function (res) {
    var str = "";
    res.on("data",function (chunk) {
        str += chunk;
    })
    res.on("end",function () {
        console.log(str);
    })
})
var  obj = {
    name:"RR",
    age:188
}
request.write(JSON.stringify(obj));
request.end();
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • https://nodejs.org/api/documentation.html 工具模塊 Assert 測試 ...
    KeKeMars閱讀 6,610評論 0 6
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,656評論 19 139
  • Ubuntu的發(fā)音 Ubuntu,源于非洲祖魯人和科薩人的語言,發(fā)作 oo-boon-too 的音。了解發(fā)音是有意...
    螢火蟲de夢閱讀 100,748評論 9 468
  • 人們總說“失去了才知道珍惜”,但他們珍惜的往往是失去的聯(lián)系,對于現(xiàn)有的,依然采取務實的態(tài)度,那就只能不停地重復“失...
    齊木吟閱讀 180評論 0 0
  • 20160619,今天作業(yè)“無主題” 既然無主題,那我就我手畫我心咯,因為學插花,覺得植物的靜美特別有味道,這,也...
    xlfd618閱讀 251評論 0 0

友情鏈接更多精彩內容