真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何用nodejs的http模塊創(chuàng)建一個(gè)簡(jiǎn)單的靜態(tài)資源服務(wù)器

本篇內(nèi)容主要講解“如何用nodejs的http模塊創(chuàng)建一個(gè)簡(jiǎn)單的靜態(tài)資源服務(wù)器”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“如何用nodejs的http模塊創(chuàng)建一個(gè)簡(jiǎn)單的靜態(tài)資源服務(wù)器”吧!

創(chuàng)新互聯(lián)是一家專業(yè)提供興賓企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、HTML5、小程序制作等業(yè)務(wù)。10年已為興賓眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。

nodejs自問世以來,基于nodejs的web開發(fā)框架層出不窮,TJ大神的express和koa,阿里的egg,360大神李成銀的thinkjs等等,這些框架是學(xué)不完的。

這些框架都是基于nodejs核心模塊http模塊封裝而來的,只不過按照業(yè)務(wù)的不同,個(gè)人代碼風(fēng)的不同,產(chǎn)生了不同的框架,今天就帶大家一起用nodejs的http模塊封裝一個(gè)簡(jiǎn)單的http靜態(tài)服務(wù)器。

在開始寫代碼之前,我們首先要了解http的模型,http的模型是基于請(qǐng)求=》處理=》響應(yīng)這樣的一個(gè)過程。

nodejs將客戶端向服務(wù)端發(fā)送請(qǐng)求的過程抽象成了一個(gè)事件,我們先用代碼演示一下:

如何用nodejs的http模塊創(chuàng)建一個(gè)簡(jiǎn)單的靜態(tài)資源服務(wù)器

此時(shí)用node命令運(yùn)行這個(gè)文件,就可以返回hello world,服務(wù)器啟動(dòng)了。

但是這個(gè)服務(wù)器,對(duì)任何請(qǐng)求都是返回hello world,功能太簡(jiǎn)單了,我們結(jié)合nodejs的另外一個(gè)核心模塊個(gè),fs模塊,將其改裝成靜態(tài)資源服務(wù)器,代碼如下:

如何用nodejs的http模塊創(chuàng)建一個(gè)簡(jiǎn)單的靜態(tài)資源服務(wù)器

此時(shí),我們已經(jīng)初步完成了,靜態(tài)資源服務(wù)器的功能,貌似完成了,我們?cè)趙ww目錄下新建一個(gè)index.html,然后測(cè)試訪問以下服務(wù)器:

如何用nodejs的http模塊創(chuàng)建一個(gè)簡(jiǎn)單的靜態(tài)資源服務(wù)器

訪問結(jié)果如下:

如何用nodejs的http模塊創(chuàng)建一個(gè)簡(jiǎn)單的靜態(tài)資源服務(wù)器

為什么是這樣的呢?我們看響應(yīng)頭:

如何用nodejs的http模塊創(chuàng)建一個(gè)簡(jiǎn)單的靜態(tài)資源服務(wù)器

這里并沒有給我們標(biāo)識(shí)正確的mime響應(yīng)頭,我們?cè)撊绾文兀?/p>

此時(shí)需要借助一個(gè)第三方包,mime,這個(gè)包有兩個(gè)方法,一個(gè)是根據(jù)url的后綴獲取請(qǐng)求文件的mime類型一個(gè)是根據(jù)mime類型判斷文件后綴,顯然我們需要第一種,官方文檔演示代碼如下:

如何用nodejs的http模塊創(chuàng)建一個(gè)簡(jiǎn)單的靜態(tài)資源服務(wù)器

服務(wù)器代碼更改如下:

如何用nodejs的http模塊創(chuàng)建一個(gè)簡(jiǎn)單的靜態(tài)資源服務(wù)器

觀察上面代碼,我們引入了,mime模塊,獲取到了文件的mime類型,然后額外增加了一個(gè)判斷,如何mime類型中包含text就追加編碼格式為utf8,這樣做是強(qiáng)制瀏覽器按照utf8模式解析文本數(shù)據(jù),防止瀏覽器按照默認(rèn)編碼格式解析文本。

此時(shí)運(yùn)行服務(wù)器,查看結(jié)果:

如何用nodejs的http模塊創(chuàng)建一個(gè)簡(jiǎn)單的靜態(tài)資源服務(wù)器

查看network的響應(yīng)頭:

如何用nodejs的http模塊創(chuàng)建一個(gè)簡(jiǎn)單的靜態(tài)資源服務(wù)器

查看紅框中的內(nèi)容,響應(yīng)頭已經(jīng)被設(shè)置好了。

上面的代碼中有個(gè)彩蛋不知道大家有沒有注意到,res.writeheader方法不僅可以設(shè)置http規(guī)范的響應(yīng)頭,還可以設(shè)置自定義響應(yīng)頭,上圖中小編設(shè)置了一個(gè)clm1100的響應(yīng)頭。

這次貌似又完成了,但是大家想想,如果靜態(tài)文件很大,我在www放了一個(gè)avi的視頻,上面的代碼還能正常運(yùn)行嗎,這將avi的大小,如果avi大小超過服務(wù)器內(nèi)存,恩,服務(wù)器掛掉了。

怎么解決呢?這里用到了nodejs里面另外一個(gè)東西,stream,流。看代碼:

如何用nodejs的http模塊創(chuàng)建一個(gè)簡(jiǎn)單的靜態(tài)資源服務(wù)器

此時(shí)觀察上面的代碼,我們發(fā)現(xiàn)這次沒有使用fs的readFile方法,而是換成了,fs.createReadStream方法,將文件轉(zhuǎn)化成一個(gè)stream,然后將這個(gè)流用pipe連接到了res上,然后就直接輸出到客戶端了,這里讀取文件的方式,就是讀取一塊響應(yīng)一塊,而不是一次性的讀取了。關(guān)于stream的使用,咱們下篇文章在討論。

到此,相信大家對(duì)“如何用nodejs的http模塊創(chuàng)建一個(gè)簡(jiǎn)單的靜態(tài)資源服務(wù)器”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!


本文標(biāo)題:如何用nodejs的http模塊創(chuàng)建一個(gè)簡(jiǎn)單的靜態(tài)資源服務(wù)器
轉(zhuǎn)載注明:http://weahome.cn/article/ihcsgg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部