node fs元件入門(配置預設路徑)
阿新 • • 發佈:2018-11-03
新增資料夾和檔案
var http=require("http"); //匯入檔案操作元件fs var fs=require("fs"); var url=require("url"); http.createServer(function(req,res){ //讀取兩次的原因是第一次先會讀取網頁的圖示,所以這裡判斷若是讀取圖示的話直接return if(req.url=="/favicon.ico"){ return; } //建立資料夾,第一個引數是資料夾名,第二個方法回撥,err是布林值,為true代表錯誤 fs.mkdir("./status",function(err){ if (err==true) { console.log(err) }else{ //建立檔案,第一個引數是檔名,第二個引數是內容,第三個引數是回撥函式 fs.writeFile("./status/text.txt","我是文字內容",function(err){ if (err==true) { console.log(err); }else{ console.log("建立檔案成功"); } }) } }) res.end(); }).listen(3000,"localhost");
讀取檔案
var http=require("http"); //匯入檔案操作元件fs var fs=require("fs"); var url=require("url"); http.createServer(function(req,res){ //讀取兩次的原因是第一次先會讀取網頁的圖示,所以這裡判斷若是讀取圖示的話直接return if(req.url=="/favicon.ico"){ return; } //先要處理中文亂碼 res.writeHead(200,{"Content-type":"text/html;charset=UTF-8"}); //讀取檔案 //第一個引數是檔案地址,第二個是回撥方法(這裡用箭頭函式) fs.readFile("./status/text.txt",(err,data)=>{ //判斷是否能讀取到檔案,這裡不能寫==true,只能直接寫err if (err) { console.log(err); }else{ //讀取txt檔案是ASCII碼所以要轉成字串 //write有兩個引數,第一個引數:是一個buffer 或 字串,表示傳送的內容 //第二個引數:encoding來說明它的編碼方式,預設utf-8 res.write(data.toString()); } //end只能出現一次 res.end(); }); }).listen(3000,"localhost");
預設路由配置(如:直接輸入http://localhost:3000/ 顯示固定頁面)
附帶常用content-type http://tool.oschina.net/commons/
var http=require("http"); //匯入檔案操作元件fs var fs=require("fs"); var url=require("url"); //匯入讀取url字尾元件path var path=require("path"); http.createServer(function(req,res){ //讀取兩次的原因是第一次先會讀取網頁的圖示,所以這裡判斷若是讀取圖示的話直接return if(req.url=="/favicon.ico"){ return; } //配置預設路由路徑 //用url元件解析請求獲取 pathname內容 var pathname=url.parse(req.url).pathname; console.log(pathname); //通過if else判斷pathname的引數,並指向到對應檔案 //配置預設輸入http://localhost:3000/ 指向到index.html if (pathname=="/") { pathname="/index.html" } //尋找對應檔案(通過拼接) fs.readFile("./status"+pathname,function(err,data){ if (err) { console.log("找不到檔案"); //指向到對應寫好的404.html fs.readFile("status/404.html",function(err,data){ if (err) {console.log("連404頁面都找不到")} else{ //必須設定格式才能顯示html的內容,狀態碼是404哦! res.writeHead(404,{"Content-type":"text/html;charset=UTF-8"}); //這裡只能用end,用write暫時找不到方法解決 res.end(data); } })//readFile(找404頁面) } //if else{ //有符合條件的檔案 console.log("找到符合條件的檔案"); //獲取檔案字尾名 let extname=path.extname(pathname); let mine=getMIne(extname); //動態根據字尾設定對應的編碼 res.writeHead(200,{"Content-type":mine}); //這個data是最外層,成功找到對應檔案的data res.end(data); } }) }).listen(3000,"localhost"); //此方法用於判斷檔案字尾返回對應的格式 function getMIne(extname){ //注意是有"."的 switch (extname){ case ".html": //讀取的是網頁 return "text/html;charset=UTF-8"; //圖片 case ".jpg": return "image/jpg"; //這是css樣式 case "css": return "text/css"; break; } }