【node.js】搭建可訪問本地檔案的伺服器①
阿新 • • 發佈:2018-12-23
前言: 學會了如何搭建了伺服器之後,就要開始運用伺服器來訪問靜態檔案了。
一、先上訪問靜態檔案的完整程式碼
(先走下流程,再解析程式碼)
//載入模組 var http = require('http'); var fs = require('fs'); var url = require('url'); var path = require('path') var server = http.createServer(function(req, res){ var staticPath = path.join(__dirname,'act'); var pathObj = url.parse(req.url, true); var filePath = path.join(staticPath, pathObj.pathname); var fileContent = fs.readFileSync(filePath,'binary'); res.write(fileContent,'binary'); res.end(); }); server.listen(8080); console.log('伺服器已開啟, 可以執行 http://localhost:8080');
①、將程式碼複製到server.js檔案中。(我的server.js是放在E盤下的subject檔案中)
②、同時server.js同目錄下建立一個act檔案,用於存放html檔案
③、在act裡面建立一個index.html檔案。(內容大家隨便)。
④、在cmd終端執行server.js(不知道如何執行,可以看我以前寫的“node.js簡易上手”);
⑤、在瀏覽器中輸入http://localhost:8080/index.html。就可以運行了。(如果在chrome瀏覽器執行有問題的朋友,可以在火狐瀏覽器開啟)
二、程式碼分析。
//載入模組 var http = require('http'); var fs = require('fs'); var url = require('url'); var path = require('path') var server = http.createServer(function(req, res){ //1.__dirname是全域性變數,可以直接獲取。表示當前執行指令碼所在的目錄。(這裡是E:\subject) var staticPath = path.join(__dirname,'act'); //path.join方法,拼接目錄地址 //2.staticPath拼接後的目錄地址,為了跳到自己專案所在那個目錄。(這裡是E:\subject\act) //3.req.url請求的連結(這裡輸出的是/index.html) var pathObj = url.parse(req.url, true); //url.parse方法,解析請求的url,解決連結"\"和"/"的差異問題。 //4.解析後的req.url是個物件。 //5.從解析後的物件中獲取到pathname(這裡pathObj.pathname是/index.html) var filePath = path.join(staticPath, pathObj.pathname); //path.join方法,拼接完整專案目錄地址。 //6.fileContent拼接後的專案目錄名字(這裡是E:\subject\act\index.html) //fs.readFileSync方法,同步讀取檔案資訊 var fileContent = fs.readFileSync(filePath,'binary'); //讀取拼接完整後的目錄中的檔案, 'binary'表示二進位制方式讀取 res.write(fileContent,'binary'); res.end(); }); server.listen(8080); console.log('伺服器已開啟, 可以執行 http://localhost:8080');
這裡要注意下的是
var fileContent = fs.readFileSync(filePath,'binary');
fs.readFileSync()方法是同步讀取檔案資料,如果檔案過大讀取時間會稍長,會導致響應時間過長。(下一篇會給大家分析非同步獲取檔案資料,這樣不會耽誤程序)。
更多內容訪問: