作為一個Web服務(wù)器應(yīng)具備以下幾個功能:
1、能顯示以.html/.htm結(jié)尾的Web頁面
2、能直接打開以.js/.css/.json/.text結(jié)尾的文件內(nèi)容
3、顯示圖片資源
4、自動下載以.apk/.docx/.zip結(jié)尾的文件
5、形如http://xxx.com/a/b/ , 則查找b目錄下是否有index.html,如果有就顯示,如果沒有就列出該目錄下的所有文件及文件夾,并可以進(jìn)一步訪問。
6、形如http://xxx.com/a/b, 則作301重定向到http://xxx.com/a/b/ , 這樣可以解決內(nèi)部資源引用錯位的問題。
引入需要用到的幾個模塊:
創(chuàng)建服務(wù)并在指定的端口監(jiān)聽:
在創(chuàng)建服務(wù)的時候需要傳遞一個匿名函數(shù)processRequest 對請求進(jìn)行處理,processRequest接收2個參數(shù),分別是request和response, request對象中包含了請求的所有內(nèi)容,request是用來設(shè)置響應(yīng)頭以及對客戶端做出響應(yīng)操作。
請求處理函數(shù)中有幾個重點需要說一下:
對于路徑中有中文的,瀏覽器會自動進(jìn)行編碼(英文不變,中文會變),因此在接收到地址后,需要對地址進(jìn)行解碼,否則最后得到的路徑和真實路徑不相符,
當(dāng)訪問路徑不是以具體的文件結(jié)尾,并且不是以/結(jié)尾,則需要通過重定向加上/,表示當(dāng)前目錄,否則當(dāng)前路徑下的靜態(tài)資源會找不到
如果訪問路徑是目錄,則列出該目錄下所有文件及文件夾,并可以點擊訪問,為了讓中文目錄能正常顯示,則還要在header中設(shè)置charset=utf-8
核心代碼就這么多,大概140行左右,完整的代碼已上傳到Git:https://github.com/git-onepixel/Node
如果要運行demo,打開cmd切換到根目錄,運行node start即可。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com