这是我参与更文挑战的第21天,活动详情查看:
更文挑战
FS模块
File system 文件系统
当前这个模块用于操作文件与文件夹
创建文件
fs.appendFile(filePath, content, callback);
filePath: 文件路径
content: 文件内容
callback: 回调函数
回调函数中有err 表示创建过程中可能出现的异常
该方法有两种用法,第一种创建文件(当文件不存在时),第二种追加内容(当文件已经存在时)
复制代码
// 引入FS模块
var fs = require("fs");
// 创建文件
fs.appendFile("./a.txt", "这是一个txt文件", function(err) {
// 当前函数就是创建文件完毕之后的回调函数
// err 表示 创建过程中可能出现的异常
console.log(err);
console.log("创建完毕");
});
console.log(1);
复制代码
输出:
读取文件
fs.readFile(filePath, callback);
filePath: 文件路径
callback: 回调函数
err: 读取过程中可能发生的错误 没错误时 err是null 有错误时 err时错误对象
data: 读取到的文件内容 它的类型时buffer
复制代码
Demo:
fs.readFile("index.html", function(err, data) {
console.log(err);
console.log(data);
console.log(data.toString());
})
复制代码
输出:
删除文件
fs.unlink(filePath, callback);
filePath: 被删除的文件的地址
callback: 回调函数
复制代码
Demo:
// 引入fs
var fs = require("fs");
// 调用unlink方法删除文件
fs.unlink("./index.html", function() {
console.log("删除")
})
复制代码
重命名
fs.rename(oldPath, newPath, callback);
oldPath: 原路径
newPath: 新路径
callback: 回调函数
复制代码
Demo:
var fs = require("fs");
fs.rename("a.js", "b.js", function(err) {
console.log("重命名")
})
复制代码
创建文件夹
fs.mkdir(dirPath, callback);
dirPath: 文件夹路径
callback: 回调函数
复制代码
Demo:
var fs = require("fs");
fs.mkdir("a", function() {
})
复制代码
删除文件夹
fs.rmdir(dirPath, callback);
dirPath: 被删除的文件夹
callback: 回调函数
注:该方法只可以删除空目录
复制代码
Demo:
var fs = require("fs");
fs.rmdir("abc", function(err) {
console.log(err);
})
复制代码
如果删除非空目录:
读取文件夹
fs.readdir(dirPath, callback);
dirPath: 被读取的文件夹
callback: 回调函数
err: 错误对象
arr: 被读取的文件夹中所有文件与文件夹名组成的数组
复制代码
Demo:
var fs = require("fs");
fs.readdir("./新建文件夹", function(err, arr) {
console.log(err);
console.log(arr);
});
复制代码
判断一个目标是文件还是文件夹
fs.stat(path, callback);
path: 目标路径
callback: 回调函数
err: 错误对象
state: 根据目标生成的一个对象 该对象有一个方法 isDirectory() 返回布尔值 如果是true 说明是文件夹 否则 说明是文件
复制代码
Demo:
var fs = require("fs");
fs.stat("./新建文件夹/aaa.txt", function(err, state) {
console.log("aaa.txt" + (state.isDirectory() ? "是" : "不是") + "一个文件夹");
})
fs.stat("./新建文件夹/aaaa", function(err, state) {
console.log("aaaa" + (state.isDirectory() ? "是" : "不是")+ "一个文件夹");
})
复制代码
结果:
删除非空目录
var fs = require("fs");
function del(dirPath) {
// 读取该文件夹
var arr = fs.readdirSync(dirPath)
// 循环
for(var i = 0; i < arr.length; i++) { var state = fs.statSync(dirPath + "/" + arr[i]);
// console.log(dirPath + "/" + arr[i] + (state.isDirectory() ? "是":"不是") + "一个文件夹");
if (state.isDirectory()) {
del(dirPath + "/" + arr[i]);
} else {
fs.unlinkSync(dirPath + "/" + arr[i])
}
}
// 最后删除文件夹
fs.rmdirSync(dirPath);
}
module.exports = del;
复制代码
URL模块
该模块用于处理URL字符串和URL对象
URL.parse
parse方法用于将URL字符串解析成URL对象
Demo:
有如下字符串:
var str = http://www.icketang.com/pc/index.html?username=laosi&password=123#ccc
想要获取url中的某一个部分:
引入url模块
var url = require("url");
调用parse方法解析字符串
url.parse(str); 返回值是一个对象
复制代码
对象如下:
静态服务器
// 引入http模块
var http = require("http");
// 引入fs模块
var fs = require("fs");
// 引入url模块
var url = require("url");
// MIMEType大全
var MIMEType = {
"*" :"application/octet-stream",
"323" :"text/h323",
"acx" :"application/internet-property-stream",
"ai" :"application/postscript",
……
}
// 创建服务器
var server = http.createServer(function(req, res) {
// if (req.url === "/index.html") {
// fs.readFile("./index.html", function(err, data) {
// res.end(data);
// })
// return;
// }
// if (req.url === "/second.html") {
// fs.readFile("./second.html", function(err, data) {
// res.end(data);
// })
// return;
// }
// 我们发现 当访问的是/index.html时,读取的是./index.html 访问的是/second.html时 读取的是./second.html 我们可以直接强行读取 不管发送的是什么请求 全部前面加.后读取
// console.log(req.url);
// 定义变量 接受格式化之后的对象
var url_obj = url.parse(req.url);
// console.log(url_obj);
var pathName = url_obj.pathname;
fs.readFile("." + pathName, function(err, data) {
if (err) {
res.setHeader("content-type", "text/plain;charset=utf-8");
res.end("抱歉, 您读取的 ." + pathName + "不存在");
return;
}
// 获取拓展名 index.html
var extName = pathName.slice(pathName.indexOf(".") + 1);
res.setHeader("content-type", MIMEType[extName] + ";charset=utf-8")
res.end(data);
})
})
// 监听端口号
server.listen(3000);
复制代码
HTTP请求方式
GET请求
HTTP请求根据目的可以划分成不同的种类。
get请求表示“从服务器上获取内容”
特点: 触发方式多
地址栏输入
img标签发出的请求
link标签发出的请求
script标签发出的请求
表单发出的请求
ajax
没有请求正文
携带的数据就是query
便于分享
复制代码
POST请求
post请求表示“往服务器上放置内容”
特点:触发方式少
表单
ajax
保密性高
因为请求时携带的数据都放在请求正文内
不便于分享
复制代码
NodeJS处理GET请求
前端发送的请求:
http://localhost:3000/login?username=%E7%8E%8B%E8%80%81%E4%BA%94&psd=123
复制代码
后端处理:
所谓的后端处理,其实就是将前端发送过来的数据或者保存,或者查询等处理方式。
var url_obj = url.parse(req.url, true);
// 定义接口处理/login
if (pathName === "/login" && req.method.toLowerCase() === "get") {
console.log(url_obj.query.username);
console.log(url_obj.query.psd);
res.end("hello");
return;
}
复制代码
url.parse的第二个参数为true时,表示将解析出来的query也转化成对象。
为false时:
为true时:
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END