欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報(bào)激活碼778899分享:node.js

柚子快報(bào)激活碼778899分享:node.js

http://yzkb.51969.com/

Node.js的特性

(1) Nodejs語法完全是js語法,只要你懂js基礎(chǔ)就可以學(xué)會(huì)Nodejs后端開發(fā)。

(2) Node.js超強(qiáng)的高并發(fā)能力,能夠?qū)崿F(xiàn)高性能服務(wù)器。

(3) 開發(fā)周期短、開發(fā)成本低、學(xué)習(xí)成本也低

2. 瀏覽器和Node.js環(huán)境對(duì)比

在Chrome瀏覽器環(huán)境中,V8引擎用于解析JS代碼,而Blink引擎是瀏覽器的排版引擎,用于處理網(wǎng)頁的html、css和DOM操作。

而Node環(huán)境中,只有V8引擎,用于處理JS代碼,所以Node.js中,訪問DOM和BOM是無法實(shí)現(xiàn)的。但Node.js因?yàn)橛衛(wèi)ibuv中間層加持,能夠?qū)崿F(xiàn)瀏覽器所不能實(shí)現(xiàn)的一些功能。

Node.js 可以解析JS代碼(沒有瀏覽器安全級(jí)別的限制)提供很多系統(tǒng)級(jí)別的API

CommonJS規(guī)范

在node.js環(huán)境中,默認(rèn)支持模塊系統(tǒng),該模塊系統(tǒng)遵循CommonJs規(guī)范。

一個(gè) JavaScript 文件就是一個(gè)模塊,在模塊文件中定義的變量和函數(shù)默認(rèn)只能在模塊文件內(nèi)部使用,如果需要在其他文件中使用,必須顯式聲明將其進(jìn)行導(dǎo)出。

CommonJS模塊規(guī)范主要分為模塊導(dǎo)出(也叫模塊定義)、模塊引用兩個(gè)部分。

模塊導(dǎo)出(module.exports或exports)

CommonJS中定義模塊的規(guī)定: 我們把公共功能抽離成一個(gè)單獨(dú)的js文件作為一個(gè)模塊。默認(rèn)情況下,里面的方法和屬性是外面無法訪問的。如果想要讓外面能夠訪問到里面的屬性和方法,就必須要通過 module.exports 或exports暴露屬性和方法。

在每一個(gè)模塊文件中,都會(huì)存在一個(gè) module 對(duì)象,即模塊對(duì)象。在模塊對(duì)象中保存了和當(dāng)前模塊相關(guān)信息。?

在模塊對(duì)象中有一個(gè)屬性 exports,它的值是一個(gè)對(duì)象,模塊內(nèi)部需要被導(dǎo)出的成員都應(yīng)該存儲(chǔ)在到這個(gè)對(duì)象中。

可以用module.exports給test.js模塊系統(tǒng)添加屬性:

或者用exports給test.js模塊系統(tǒng)添加屬性:?

或者用module.exports = { }把屬性組合成一個(gè)對(duì)象后導(dǎo)出:?

模塊導(dǎo)入(require) 在其他文件中通過 require 方法引入模塊,require 方法的返回值就是對(duì)應(yīng)模塊的 module.exports 對(duì)象。在導(dǎo)入模塊時(shí),模塊文件后綴 .js 可以省略,文件路徑不可省略。

(1) require 方法屬于同步導(dǎo)入模塊,模塊導(dǎo)入后可以立即使用。 (2) 導(dǎo)入其他模塊時(shí),建議使用 const 關(guān)鍵字聲明,防止模塊被重置。 我們創(chuàng)建一個(gè)require.js文件,里面導(dǎo)入上面的test.js:

會(huì)發(fā)現(xiàn)打印的第二個(gè)module的children屬性會(huì)多一些信息:?

2. npm包管理工具的用法詳解

npm介紹:npm是世界上最大的開放源代碼的生態(tài)系統(tǒng),我們可以通過npm下載各種包。npm是隨同Node.js一起安裝的包管理工具,能解決Node.js代碼部署上的很多問題。

常見的使用場景有以下幾種 (1) 允許用戶從NPM服務(wù)器下載別人編寫的第三方包到本地使用。 (2) 允許用戶從NPM服務(wù)器下載并安裝別人編寫的命令行程序到本地使用。 (3) 允許用戶將自己編寫的包或命令行程序上傳到NPM服務(wù)器供別人使用。

?

npm常用命令 初始化項(xiàng)目:

npm init --yes

復(fù)制

使用 npm 命令安裝模塊:

npm install 包名@版本號(hào)

復(fù)制

全局安裝與本地安裝:

npm install 包名 # 本地安裝

npm install 包名 -g # 全局安裝

復(fù)制

查看所有全局安裝的模塊:

npm list -g

復(fù)制

卸載模塊:

npm uninstall 包名

復(fù)制

更新模塊:

npm update 包名

復(fù)制

package.json 和 package-lock.json 區(qū)別

(1) package.json 是在運(yùn)行 “ npm init ”時(shí)生成的,主要記錄項(xiàng)目依賴,主要有以下結(jié)構(gòu):

name:項(xiàng)目名,也就是在使用npm init 初始化時(shí)取的名字. main:入口文件,一般都是 index.js description:描述信息,有助于搜索。 version:版本號(hào)。 keywords:關(guān)鍵字,有助于在人們使用 npm search搜索時(shí)發(fā)現(xiàn)你的項(xiàng)目。 scripts:支持的腳本,默認(rèn)是一個(gè)空的 test。 license :默認(rèn)是 MIT。 dependencies:指定了項(xiàng)目運(yùn)行時(shí)(生產(chǎn)環(huán)境)所依賴的模塊。 devDependencies:指定項(xiàng)目開發(fā)時(shí)所需要的模塊,也就是在項(xiàng)目開發(fā)時(shí)才用得上,一旦項(xiàng)目打包上線了,就將移除這里的第三方模塊。

(2) package-lock.json 是在運(yùn)行 “npm install” 時(shí)生成的一個(gè)文件,用于記錄當(dāng)前狀態(tài)下項(xiàng)目中實(shí)際安裝的各個(gè) package 的版本號(hào)、模塊下載地址、及這個(gè)模塊又依賴了哪些依賴。

為什么有了package.json,還需要 package-lock.json 文件呢?

當(dāng)項(xiàng)目中已有 package-lock.json 文件,在安裝項(xiàng)目依賴時(shí),將以該文件為主進(jìn)行解析安裝指定版本依賴包,而不是使用 package.json 來解析和安裝模塊。 因?yàn)?package 只是指定的版本不夠具體,而package-lock 為每個(gè)模塊及其每個(gè)依賴項(xiàng)指定了安裝的版本,位置和完整性哈希,所以它每次創(chuàng)建的安裝都是相同的。 無論你使用什么設(shè)備,或者將來安裝它都無關(guān)緊要,每次都應(yīng)該給你相同的結(jié)果。

npm install安裝模塊時(shí)的一些選項(xiàng)

使用npm install安裝依賴時(shí),可以使用--save和--save-dev。

使用--save安裝的依賴,安裝的包會(huì)被寫到package的dependencies屬性里面去。dependencies 是運(yùn)行時(shí)依賴(生產(chǎn)環(huán)境),可以簡化為參數(shù) -S。

而使用--save-dev 則添加到 package.json 文件 devDependencies 鍵下,devDependencies 是開發(fā)時(shí)的依賴。即 devDependencies 下列出的模塊,是開發(fā)時(shí)用的 ,生產(chǎn)環(huán)境會(huì)移除,可以簡化為參數(shù) -D。

版本號(hào)的命名規(guī)則

在 Node.js 中所有的版本號(hào)都有3個(gè)數(shù)字:x.y.z。 第一個(gè)數(shù)字是主版本。第二個(gè)數(shù)字是次版本。第三個(gè)數(shù)字是補(bǔ)丁版本。

^:只會(huì)執(zhí)行不更改最左邊非零數(shù)字的更新。 如果寫入的是 ^0.13.0,則當(dāng)運(yùn)行 npm update 時(shí),可以更新到 0.13.1、0.13.2 等,但不能更新到 0.14.0 或更高版本。 如果寫入的是 ^1.13.0,則當(dāng)運(yùn)行 npm update 時(shí),可以更新到 1.13.1、1.14.0 等,但不能更新到 2.0.0 或更高版本。 ~:如果寫入的是 ?0.13.0,則當(dāng)運(yùn)行 npm update 時(shí),會(huì)更新到補(bǔ)丁版本:即 0.13.1 可以,但 0.14.0 不可以。 >:接受高于指定版本的任何版本。 >=:接受等于或高于指定版本的任何版本。 <=:接受等于或低于指定版本的任何版本。 <:接受低于指定版本的任何版本。 =:接受確切的版本。 -:接受一定范圍的版本。例如:2.1.0 - 2.6.2。 ||:組合集合。例如 < 2.1 || > 2.6。

三.Node.js的常用內(nèi)置模塊

下面開始總結(jié)Node.js的內(nèi)置模塊了,如果你是入門學(xué)習(xí)的話,推薦按照本文順序來學(xué),學(xué)習(xí)思路會(huì)更清晰。如果你只是要查閱相關(guān)模塊的用法,可以從目錄索引導(dǎo)航到那一個(gè)模塊。

1. http模塊

http模塊是 Node.js 網(wǎng)絡(luò)的關(guān)鍵模塊??梢允褂靡韵麓a引入:

const http = require('http')

復(fù)制

該模塊提供了一些屬性、方法、以及類。我們要學(xué)習(xí)的就是一些常用的屬性、方法、以及類的使用。

常用方法:

(1) http.createServer() :用于返回 http.Server 類的新實(shí)例。 用法:

const server = http.createServer((req, res) => {

//使用此回調(diào)處理每個(gè)單獨(dú)的請(qǐng)求。

})

復(fù)制

(2) http.request() :用于發(fā)送 HTTP 請(qǐng)求到服務(wù)器,并創(chuàng)建 http.ClientRequest 類的實(shí)例。

(3) http.get() :類似于 http.request(),但會(huì)自動(dòng)地設(shè)置 HTTP 方法為 GET,并自動(dòng)地調(diào)用 req.end()。

常用屬性:

(1) http.METHODS :此屬性列出了所有支持的 HTTP 方法。像什么GET、POST、DELETE等等。

const http=require('http');

console.log(http.METHODS)

?

(2) http.STATUS_CODES :此屬性列出了所有的 HTTP請(qǐng)求的狀態(tài)代碼及其描述。

const http=require('http');

console.log(http.STATUS_CODES)

?

常用類: HTTP 模塊提供了5 個(gè)很常用的類,分別如下: (1) http.Agent :Node.js 會(huì)創(chuàng)建 http.Agent 類的全局實(shí)例,以管理 HTTP 客戶端連接的持久性和復(fù)用,這是 Node.js HTTP 網(wǎng)絡(luò)的關(guān)鍵組成部分。該對(duì)象會(huì)確保對(duì)服務(wù)器的每個(gè)請(qǐng)求進(jìn)行排隊(duì)并且單個(gè) socket 被復(fù)用,它還維護(hù)一個(gè) socket 池。

(2) http.ClientRequest :當(dāng) http.request() 或 http.get() 被調(diào)用時(shí),會(huì)創(chuàng)建 http.ClientRequest 對(duì)象。當(dāng)響應(yīng)被接收時(shí),則會(huì)使用響應(yīng)(http.IncomingMessage 實(shí)例作為參數(shù))來調(diào)用 response 事件。返回的響應(yīng)數(shù)據(jù)可以通過以下兩種方式讀?。?/p>

可以調(diào)用 response.read() 方法。在 response 事件處理函數(shù)中,可以為 data 事件設(shè)置事件監(jiān)聽器,以便可以監(jiān)聽流入的數(shù)據(jù)。

(3) http.Server : 當(dāng)使用 http.createServer() 創(chuàng)建新的服務(wù)器時(shí),通常會(huì)實(shí)例化并返回此類。擁有服務(wù)器對(duì)象后,就可以訪問其方法:

close() 停止服務(wù)器不再接受新的連接。listen() 啟動(dòng) HTTP 服務(wù)器并監(jiān)聽連接。

(4) http.ServerResponse :由 http.Server 創(chuàng)建,并作為第二個(gè)參數(shù)傳給它觸發(fā)的 request 事件。通常在代碼中用作 res:

const server = http.createServer((req, res) => {

//res 是一個(gè) http.ServerResponse 對(duì)象。

})

復(fù)制

這個(gè)類的以下這些方法用于與 HTTP 消息頭進(jìn)行交互:

方法名 作用 getHeaderNames() 獲取已設(shè)置的 HTTP 消息頭名稱的列表。 getHeaders() 獲取已設(shè)置的 HTTP 消息頭的副本。 setHeader(‘headername’, value) 設(shè)置 HTTP 消息頭的值。 getHeader(‘headername’) 獲取已設(shè)置的 HTTP 消息頭。 removeHeader(‘headername’) 刪除已設(shè)置的 HTTP 消息頭。 hasHeader(‘headername’) 如果響應(yīng)已設(shè)置該消息頭,則返回 true。 headersSent() 如果消息頭已被發(fā)送給客戶端,則返回 true。

在處理消息頭之后,可以通過調(diào)用 response.writeHead()(該方法接受 statusCode 作為第一個(gè)參數(shù),可選的狀態(tài)消息和消息頭對(duì)象)將它們發(fā)送給客戶端。

若要在響應(yīng)正文中發(fā)送數(shù)據(jù)給客戶端,則使用 write()。 它會(huì)發(fā)送緩沖的數(shù)據(jù)到 HTTP 響應(yīng)流。

如果消息頭還未被發(fā)送,則使用 response.writeHead() 會(huì)先發(fā)送消息頭,其中包含在請(qǐng)求中已被設(shè)置的狀態(tài)碼和消息,可以通過設(shè)置 statusCode 和 statusMessage 屬性的值進(jìn)行編輯:

response.statusCode = 500

response.statusMessage = '內(nèi)部服務(wù)器錯(cuò)誤'

復(fù)制

(5) http.IncomingMessage

該類的對(duì)象可通過這兩種方式創(chuàng)建:http.Server,當(dāng)監(jiān)聽 request 事件時(shí)。http.ClientRequest,當(dāng)監(jiān)聽 response 事件時(shí)。

它可以用來訪問響應(yīng): 使用 statusCode 和 statusMessage 方法來訪問狀態(tài)。 使用 headers 方法或 rawHeaders 來訪問消息頭。 使用 method 方法來訪問 HTTP 方法。 使用 httpVersion 方法來訪問 HTTP 版本。 使用 url 方法來訪問 URL。 使用 socket 方法來訪問底層的 socket。

2. http模塊簡單案例實(shí)踐

創(chuàng)建一個(gè)server.js,我們一點(diǎn)一點(diǎn)來用這個(gè)http模塊:

const http=require('http')

// 創(chuàng)建服務(wù)器

http.createServer((req,res)=>{

//接收瀏覽器傳的參數(shù),返回渲染的內(nèi)容,都在這個(gè)回調(diào)函數(shù)里面來做

//req是接收的瀏覽器的參數(shù),res是返回給瀏覽器渲染的內(nèi)容。

}).listen(3000,()=>{

console.log("server start")

})

/* listen()方法的第一個(gè)參數(shù)是端口號(hào),第二個(gè)參數(shù)是一個(gè)回調(diào)函數(shù),這個(gè)回調(diào)函數(shù)是服務(wù)器創(chuàng)建成功后執(zhí)行的函數(shù) */

復(fù)制

命令行運(yùn)行node server.js ,會(huì)看到server start打印在控制臺(tái)了,并且光標(biāo)在閃動(dòng),這表示服務(wù)創(chuàng)建成功,并監(jiān)聽了這個(gè)服務(wù)。現(xiàn)在瀏覽器訪問http://localhost:3000/,瀏覽器還訪問不到任何東西,因?yàn)槲覀儧]有返回任何數(shù)據(jù)。

我們可以在createServer()的回調(diào)里面調(diào)用res.write()對(duì)瀏覽器進(jìn)行輸出,res.write()可以調(diào)用多次,都會(huì)輸出在瀏覽器上。但要注意,最后一定要掉用res.end()。不然瀏覽器會(huì)一直等,直到超時(shí)。

?

?

?

?

柚子快報(bào)激活碼778899分享:node.js

http://yzkb.51969.com/

精彩文章

評(píng)論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/18823932.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問

文章目錄