1. 程式人生 > >web前端課程技術總結Node.js 使用方法及相關方法分析

web前端課程技術總結Node.js 使用方法及相關方法分析

測試 一個 ejs 強制 req != server 跨域 ade

Node.js 使用方法及相關方法分析

首先我們要了解什麽是node.js?

官方解釋是:node.js是一個基於Chrome v8引擎的javascript 運行環境。Node.js使用了一個事件驅動、非阻塞式 I/O的模型,使其輕量又高效。他是由c++編寫的 所以速度很快

簡單來說 就是一個js 的運行環境,所以他開發用的語言是js語言 ,通過node去編譯你的js文件

node.js 的安裝

1)npm i -g 全局(電腦只需安裝一次)

2)npm i --save -dev /-D/(局部項目依賴)

3)制定版本 npm i [email protected] (@後面跟版本號 如@3表示安裝的是@後方跟的數字的最大的版本)

Node的特點:是比較塊 因為是由c++編寫的 但是的話有一個缺點就是內耗比較多。據網上一個百萬級並發測試, 未優化的情況下1M的鏈接消耗了16G內存 !這點就很驚人了,但是他的一些有點也是有目共睹的。 他不單單可以輔助前端開發 同時也可以代替後臺開發。

但是雖然優點這麽多 但是由於node 是一種小型的後端語言 ,比較新 所以相對的會的人也比較少。

服務器的搭建

建立一個服務器的話 首先你要導入node.js提供的內置模塊,然後定義一個主機名,之後再給個端口號。建立情況如下


const http=require(‘http‘) //導入node.js提供的內置模塊(原生模塊)

const hostname = ‘127.0.0.1‘;//定義一個主機名

const port = 3000; //給個端口

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

//頭部信息

res.setHeader(‘‘content-type,‘text/html;charset=utf-8‘)

//狀態碼

res.statusCode = 200;

//過濾隊ico的請求

if(req.url !=‘/favicon.ico‘){

res.write(‘hello nodejs‘); //node裏面寫入的類型都是字符串類型 直接解析字符串類型的數據

//結束響應標示

res.end();//只是作為一個響應關閉的標示 一般不寫數據 寫的話 可以通過res.write來寫

}

//監聽 listen 有三個參數 端口號 主機名 還有一個回調函數 回調函數裏面 你可以寫上你想要在頁面裏面展示的東西

}).listen(port,hostname,()=>{

console.log(‘服務已經啟動:http://${hostname}:${port}‘)

})


上面的方法是比較詳細的情況,當然我們也可以通過一些更簡潔的方法也建立服務器,主機名這裏是默認的 可以省略。 端口號 在下面監聽的時候可以直接寫出來 所以開始的時候也是不需要寫出來的

然後就是頭部部分 頭部部分我們可以直接吧端口號 以及他的格式全部寫出來 不過這個時候 要用res.writeHead(200,{‘content-type‘:‘text/html;charset=utf-8‘})

當然如果僅僅是這樣寫 等你運行的時候 還是會報錯的 那就是跨域問題 這時候你需要把跨域出現的這種情況

裏面的Access-Control-Allow-Origin 給添加到我們的頭部信息裏面如下

這樣就可以解決我們的跨域問題了!

那麽現在引申一個問題。什麽情況下 才會觸發跨域問題呢?

協議、域名、端口號 有任何一個問題 都會出現跨域問題!

數據的發送

舉個例子,我們建立一個html 建立一個輸入框 一個發送按鈕 然後給這個添加一個點擊事件 如下:

我們先綁定一個點擊事件,然後用ajax發送輸入框裏面的信息給後端服務器,在這裏post為發送 路徑不變 要帶上協議地址, 然後把發送的內容以對象的形式發送過去。然後是後端的書寫 如下:

接收數據時,要用請求對象接收過來,也就是req,請求對象有個on方法,on方法裏面要綁定一個data事件。來接收我們的事件。 然後第二個參數是一個回調函數,這個參數就使我們接收過來的數據 然後打印出來。 但是的話 打印出來之後出現的並不是我們想要的信息,如下:

這是Buffer數據,我們可以用 tostring()給他強制轉換成字符串 如下:

好了。 我們得到了我們想要得到的信息,現在我們所有的數據都接收過來 這些做完了之後,你會發現 在你做的過程中,每次更改代碼,你都需要重新重啟一下服務器,才可以正常進行你的工作。 所以下面交大家一個小小的方法 也就是自動監聽node supervisor 這樣就可以不用執行node 自動監聽。

上面是node.js 的一些簡單的學習。學海無涯,且學且珍惜!

web前端課程技術總結Node.js 使用方法及相關方法分析