web前端課程技術總結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 使用方法及相關方法分析