第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

請(qǐng)問webpack 服務(wù)器端必須用node 處理嗎?

請(qǐng)問webpack 服務(wù)器端必須用node 處理嗎?

慕蓋茨4494581 2019-08-15 11:09:58
webpack 服務(wù)器端必須用node 處理嗎
查看完整描述

5 回答

?
至尊寶的傳說

TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超10個(gè)贊

node.js實(shí)現(xiàn)web服務(wù)器還是比較簡單的,我了解node.js是從《node入門》開始的,如果你不了解node.js也可以看看!
我根據(jù)那書一步一步的練習(xí)完了,也的確大概了解了node.js,不過里面寫的路由的地方總感覺不方便,十一放假最后一天,試著寫了個(gè)簡單的web服務(wù)器,現(xiàn)在分享記錄于此!
http模塊已提供了基本功能,所以我主要解決兩個(gè)問題,1是靜態(tài)資源的處理,2是動(dòng)態(tài)資源的路由。
靜態(tài)資源在node.js里的意思是不變的,如圖片、前端js、css、html頁面等。
動(dòng)態(tài)資源我們一般指aspx頁面,ashx頁面,asp頁面,jsp頁面,php頁面等,而node.js里其實(shí)沒動(dòng)態(tài)資源這一說,它對(duì)請(qǐng)求的處理都是由回調(diào)方法完成的,在我實(shí)現(xiàn)的httserver里,借鑒了ashx的寫法,把處理請(qǐng)求的js文件看作動(dòng)態(tài)資源。
首先實(shí)現(xiàn)一個(gè)處理靜態(tài)資源的函數(shù),其實(shí)就是對(duì)本地文件的讀取操作,這個(gè)方法已滿足了上面說的靜態(tài)資源的處理。
//處理靜態(tài)資源
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");
}
});
}

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

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



查看完整回答
反對(duì) 回復(fù) 2019-08-24
?
慕的地8271018

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊

Redis使用單線程的IO復(fù)用模型,自己封裝了一個(gè)簡單的AeEvent事件處理框架,主要實(shí)現(xiàn)了epoll、kqueue和select,對(duì)于單純只有IO操作來說,單線程可以將速度優(yōu)勢(shì)發(fā)揮到最大,但是Redis也提供了一些簡單的計(jì)算功能
比如排序、聚合等,對(duì)于這些操作,單線程模型實(shí)際會(huì)嚴(yán)重影響整體吞吐量,CPU計(jì)算過程中,整個(gè)IO調(diào)度都是被阻塞住的。

查看完整回答
反對(duì) 回復(fù) 2019-08-24
?
滄海一幻覺

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超5個(gè)贊

去除不必要的插件
剛開始用 webpack 的時(shí)候,開發(fā)環(huán)境和生產(chǎn)環(huán)境用的是同一個(gè) webpack 配置文件,導(dǎo)致生產(chǎn)環(huán)境打包的 JS 文件包含了一大堆沒必要的插件,比如 HotModuleReplacementPlugin, NoErrorsPlugin... 這時(shí)候不管用什么優(yōu)化方式,都沒多大效果。所以,如果你打包后的文件非常大的話,先檢查下是不是包含了這些插件。
提取第三方庫
像 react 這個(gè)庫的核心代碼就有 627 KB,這樣和我們的源代碼放在一起打包,體積肯定會(huì)很大。所以可以在 webpack 中設(shè)置
{
entry: {
bundle: 'app'
vendor: ['react']
}
plugins: {
new webpack.optimize.CommonsChunkPlugin('vendor', 'vendor.js')
}
}



查看完整回答
反對(duì) 回復(fù) 2019-08-24
  • 5 回答
  • 0 關(guān)注
  • 645 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)