HTTP模块
-
http模块, 我们可以通过该模块,维护一个服务器
-
步骤
-
引入模块
const http = require("http");
-
创建服务对象, 并设置监听的回调函数
const server = http.createServer(function (req, res) { // 该函数会在前端请求本服务器时触发, req 请求对象, 存储本次请求的所有数据; res 响应对象, 用于对本次请求做响应 console.log("服务器被请求了..."); res.end("request finished!"); });
-
设置端口号, 开启监听 端口号的范围0-65535, 建议起4位的端口号
server.listen(6789, function () { // 该函数会在服务器启动之后触发 console.log("服务器搭建完毕, listening......"); });
-
FS模块
-
专门处理文件的模块
-
步骤
-
引入fs模块
const fs = require("fs");
-
引入path模块
const path = require("path");
注:node建议, 我们在使用fs读取文件的时候, 文件的路径给绝对路径
-
拼接一个当前文件的绝对路径出来
let bookPath = path.resolve(__dirname, "book.txt");
-
异步读取文件内容
fs.readFile(bookPath, "utf-8", function (error, data) { console.log(data, error); });
-
同步读取文件内容
let data = fs.readFileSync(bookPath, "utf-8"); console.log(data);
-
events模块
-
用来做事件监听的模块
因为将来, 我们有一些需求, 不确定什么时候会发生, 结果自然不知道什么时候能得到, 处了可以通过回调解决之外, 监听也是一种办法
-
事件监听的注意点:
一定要保证先设置监听, 再触发事件
-
步骤
-
引入events模块
const EventEmitter = require("events");
-
创建事件监听对象
const event = new EventEmitter();
-
设置监听 通过on方法
//on("要监听的事件名", 回调); event.on("ChinaEvent", function () { // 该函数当 ChinaEvent事件触发时调用 console.log("ChinaEvent事件触发了!"); });
-
触发事件 通过emit方法
// emit("事件名"); event.emit("ChinaEvent"); setTimeout(function(){ event.emit("ChinaEvent"); }, 3000);
-
URL模块
-
node里用来处理网络地址的模块
-
步骤
-
引入url模块
const url = require("url"); let urlPath = "http://www.test.com:9876/a/b/c/index.html?username=张三&password=666#second";
-
通过url模块将url地址解析成对象方便我们获取里的值
let urlPathObj = url.parse(urlPath); console.log(urlPathObj);
-
/* protocol: 协议名 slashes: 协议名后面是否有双斜杠 auth: 网址是否经过认证授权 host: 域名:端口号 port: 端口号 hostname: 域名 hash:哈希值 search:?参数列表 query: 参数列表 pathname: 路径 path: 路径?参数列表 href: 完整的url路径 */
-
Path模块
-
node里用来处理路径的模块
-
步骤
-
引入path模块
let path = require("path");
-
规范化路径
let str1 = "./a/b/c/../d"; let pathStr1 = path.normalize(str1);
-
路径拼接 在拼接的同时, 做规范化
let pathStr2 = path.join("/", "/a", "/b", "../", "/c");
-
node的两个全局变量 __ dirname 表示当前文件所属的文件夹的绝对路径, __filename当前文件所属的绝对路径
console.log(__dirname); console.log(__filename);
-
判断一个路径是否是绝对路径
console.log(path.isAbsolute(__filename)); console.log(path.isAbsolute(__dirname)); //以/开头的也认为是绝对路径 console.log(path.isAbsolute("a/b/c/d")); console.log(path.isAbsolute("./a/b/c/d")); console.log(path.isAbsolute("/a/b/c/d"));
-
指定路径的开头 resolve(指定的开头, 子路径)
a. 当第一个参数省略时, 系统会默认把指定的开头认为是当前文件所在目录
b. 如果第二个参数是绝对路径, 系统就不再拼接, 而做替换
let pathStr3 = path.resolve(__dirname, "a/b/c"); let pathStr4 = path.resolve(__dirname, "/a/b/c"); let pathStr5 = path.resolve("a/b/c"); let pathStr6 = path.resolve("/a/b/c");
-
自动计算从一个路径到另一个路径的相对路径
let pathStr7 = path.relative("/a/b/c", "/a/f");
-
获取当前路径里的文件所处的位置
let pathStr8 = path.dirname("/a/b/c/d/book.txt");
-
获取路径中的最后一个部分 basename()
let str2 = "C:\\Users\\lx\\Desktop\\中北大学2017级大前端实训课堂代码\\Node\\Node01\\1.txt" // console.log(str2); let pathStr9 = path.basename(str2); // console.log(pathStr9);
-
获取路径里面文件的后缀 extname()
let str3 = "/a/b/c/d/news.doc"; let pathStr10 = path.extname(str3);
-
对路径进行解析, 解析成一个路径对象
let str4 = path.resolve(__dirname, "aaa.ppt"); console.log(str4); let pathObj = path.parse(str4); console.log(pathObj);
-