欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

node.js基礎(chǔ)知識(shí)匯總

 更新時(shí)間:2020年08月25日 09:45:34   作者:小蔥  
這篇文章主要介紹了node.js基礎(chǔ)知識(shí),幫助大家更好的理解和學(xué)習(xí)node.js,感興趣的朋友可以了解下

一、node介紹

1.node的應(yīng)用場(chǎng)景

  • 工具類(lèi) gulp webpack vite (node可以讓js運(yùn)行在服務(wù)器)
  • 可以做服務(wù)端 優(yōu)化ssr
  • 可以做中間層 (解決跨域問(wèn)題,格式化數(shù)據(jù))

2.性能

  • 非阻塞
  • 異步I/O(當(dāng)這個(gè)方法調(diào)用完畢后不會(huì)立即返回結(jié)果)
  • 事件驅(qū)動(dòng)(發(fā)布訂閱模式)

3.優(yōu)勢(shì)

在Java、PHP或者.NET等服務(wù)器語(yǔ)言中,會(huì)為每一個(gè)客戶端連接創(chuàng)建一個(gè)新的線程。而每個(gè)線程需要耗費(fèi)大約2MB內(nèi)存。也就是說(shuō),理論上,一個(gè)8GB內(nèi)存的服務(wù)器可以同時(shí)連接的最大用戶數(shù)為4000個(gè)左右。要讓web應(yīng)用程序支持更多的用戶,就需要增加服務(wù)器的數(shù)量,而web應(yīng)用程序的硬件成本當(dāng)然就上升了。

NodeJs不為每個(gè)客戶連接創(chuàng)建一個(gè)新的線程,而僅僅使用一個(gè)線程。當(dāng)有用戶連接了,就觸發(fā)一個(gè)內(nèi)部事件,通過(guò)非阻塞I/O、事件驅(qū)動(dòng)機(jī)制,讓Node.js程序宏觀上也是并行的。使用Node.js,一個(gè)8GB內(nèi)存的服務(wù)器,可以同時(shí)處理超過(guò)4萬(wàn)用戶的連接。

二、node的全局對(duì)象和模塊

1.global

global是全局對(duì)象,可以直接訪問(wèn)里面的屬性

里面有:

  • Buffer
  • process
  • setInterval,setTimeout,setImmediate
  • console
  • queueMicrotask

2.模塊

  • __dirname
  • __filename
  • exports
  • module
  • require()

三、process常用屬性或方法

process.platform 系統(tǒng)

process.kill 殺進(jìn)程

process.exit 退出進(jìn)程

process.nextTick node中的微任務(wù) 當(dāng)前執(zhí)行棧的底部 優(yōu)先級(jí)比promise高

process.cwd() 當(dāng)前的工作目錄,是可變的,看命令在哪里執(zhí)行 (__dirname當(dāng)前文件所在的文件夾,此路徑不會(huì)發(fā)生變化)

process.env 環(huán)境變量(可以set,例如process.env.NODE_ENV)

process.argv 執(zhí)行時(shí)所帶的參數(shù)

四、事件環(huán)機(jī)制

重要的三個(gè)階段

timer 存放定時(shí)器

poll 輪詢處理I/O回調(diào)

check setImmediate

如果在 I/O 回調(diào)的方法里,setImmediate優(yōu)先于 timer 執(zhí)行

應(yīng)為 poll 接下來(lái)是 check

nextTick 算是一個(gè)微任務(wù),不在事件環(huán)中

在node 11 以上 宏任務(wù)與微任務(wù)的執(zhí)行順序與瀏覽器一樣

五、Buffer

JavaScript 語(yǔ)言自身只有字符串?dāng)?shù)據(jù)類(lèi)型,沒(méi)有二進(jìn)制數(shù)據(jù)類(lèi)型。

但在處理像TCP流或文件流時(shí),必須使用到二進(jìn)制數(shù)據(jù)。因此在 Node.js中,定義了一個(gè) Buffer 類(lèi),該類(lèi)用來(lái)創(chuàng)建一個(gè)專(zhuān)門(mén)存放二進(jìn)制數(shù)據(jù)的緩存區(qū)。在 Node.js 中,Buffer 類(lèi)是隨 Node 內(nèi)核一起發(fā)布的核心庫(kù)。Buffer 庫(kù)為 Node.js 帶來(lái)了一種存儲(chǔ)原始數(shù)據(jù)的方法,可以讓 Node.js 處理二進(jìn)制數(shù)據(jù),每當(dāng)需要在 Node.js 中處理I/O操作中移動(dòng)的數(shù)據(jù)時(shí),就有可能使用 Buffer 庫(kù)。原始數(shù)據(jù)存儲(chǔ)在 Buffer 類(lèi)的實(shí)例中。一個(gè) Buffer 類(lèi)似于一個(gè)整數(shù)數(shù)組,但它對(duì)應(yīng)于 V8 堆內(nèi)存之外的一塊原始內(nèi)存。Buffer屬于global上的屬性可以直接被訪問(wèn),讀取文件,寫(xiě)入(二進(jìn)制)從硬盤(pán)中讀取的數(shù)據(jù)都存到內(nèi)存上,buffer可以和字符串相互轉(zhuǎn)化

定義buffer的三種方式

let buf1 = Buffer.alloc(6);
let buf2 = Buffer.from('珠峰');
let buf3 = Buffer.from([65,66,67]);

buffer中常用的方法

  • buff.toString()
  • buff.fill()
  • buff.slice()
  • buff.copy
  • Buffer.concat()
  • Buffer.isBuffer()
  • indexOf

以上就是node.js基礎(chǔ)知識(shí)匯總的詳細(xì)內(nèi)容,更多關(guān)于node.js基礎(chǔ)知識(shí)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論