亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

webpack 服務器端必須用node 處理嗎?

webpack 服務器端必須用node 處理嗎?

達令說 2018-11-15 19:15:14
webpack 服務器端必須用node 處理嗎
查看完整描述

1 回答

?
滄海一幻覺

TA貢獻1824條經驗 獲得超5個贊

node.js實現web服務器還是比較簡單的,我了解node.js是從《node入門》開始的,如果你不了解node.js也可以看看!
我根據那書一步一步的練習完了,也的確大概了解了node.js,不過里面寫的路由的地方總感覺不方便,十一放假最后一天,試著寫了個簡單的web服務器,現在分享記錄于此!
http模塊已提供了基本功能,所以我主要解決兩個問題,1是靜態資源的處理,2是動態資源的路由。
靜態資源在node.js里的意思是不變的,如圖片、前端js、css、html頁面等。
動態資源我們一般指aspx頁面,ashx頁面,asp頁面,jsp頁面,php頁面等,而node.js里其實沒動態資源這一說,它對請求的處理都是由回調方法完成的,在我實現的httserver里,借鑒了ashx的寫法,把處理請求的js文件看作動態資源。
首先實現一個處理靜態資源的函數,其實就是對本地文件的讀取操作,這個方法已滿足了上面說的靜態資源的處理。
//處理靜態資源
function staticResHandler(localPath, ext, response) {
fs.readFile(localPath, "binary", function (error, file) {
if (error) {
response.writeHead(500, { "Content-Type": "text/plain" });
response.end("Server Error:" + error);
} else {
response.writeHead(200, { "Content-Type": getContentTypeByExt(ext) });
response.end(file, "binary");
}
});
}

而動態資源肯定不能一個方法搞定,就像你的網站有register.aspx、login.aspx等等,都需要你自己來寫,在我的httpserver里,每個處理請求的js模塊都導出processRequest(request,response)即可,比如實現一個register.js(只輸出字符串register)
exports.processRequest = function (request, response) {
response.writeHead(200, { 'Content-Type': 'text/plain' });
resp.end("register");
}

現在當請求到來時,我們要做的就是決定怎么處理,即路由。
因為靜態資源url指定靜態資源大家都很習慣了,所以這里不變,比如
訪問http://localhost/img/logo.png 就是訪問 web根目錄\img\logo.png;
訪問http://localhost/js/what.js 就是訪問 web根目錄\js\what.js;
而動態資源也是一般的js文件,即服務器端js,就比如我實現的這個httpserver.js和上面說的register.js都是不應該讓用戶訪問的,所以路由的時候要判斷,就是一些if、else,簡單而強大是我的最愛,這里只看最后的的判斷,
fs.exists(localPath, function (exists) {
if (exists) {
if (staticRes) {
staticResHandler(localPath, ext, response); //靜態資源



查看完整回答
反對 回復 2018-12-11
  • 1 回答
  • 0 關注
  • 865 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號