1. 程式人生 > >node fs元件入門(配置預設路徑)

node fs元件入門(配置預設路徑)

新增資料夾和檔案

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;
	}
}