[关闭]
@Wangww0925 2019-08-07T08:03:13.000000Z 字数 3594 阅读 228

path 路径模块

NodeJs


引入path路径模块:var path = require("path");

path 参数

  1. resolve() - 绝对路径
  2. normalize() - 格式化路径
  3. join() - 路径拼接
  4. format() - 把对象拼接成路径
  5. parse() - 把路径转换为对象
  6. dirname() - 获取文件所在的目录
  7. basename() - 获取文件名【第二参数忽略文件后缀名,即获取文件的前缀名】
  8. extname() - 获取文件的后缀名【如果文件没有后缀名,返回一个空】
  9. isAbsolute() -
  10. relative() -
  11. toNamespacedPath() -
  12. sep - '\\'
  13. delimiter - ';'
  14. win32 - [Circular]
  15. posix {} - object
  16. _makeLong() -

path.resolve() 绝对路径 【相当于在cmd光标目录下执行以下操作】

  1. var path = require("path");
  2. var str = path.resolve("aa.js");
  3. console.log(str); // D:\node\aa.js
  1. var path = require("path");
  2. var str = path.resolve("aa/bb","cc/dd","../ee");
  3. console.log(str); // D:\node\aa\bb\cc\ee

path.normalize() 格式化路径

  1. var path = require("path");
  2. var str = path.normalize("./aa/bb//cc/../dd/index.html");
  3. console.log(str); // aa\bb\dd\index.html

path.join() 路径拼接

  1. var path = require("path");
  2. var str = path.join("./aa","cc","../dd/","index.html");
  3. console.log(str); // aa\dd\index.html
  1. var path = require("path");
  2. var str = path.join("path","upload","aa","1.jpg");
  3. console.log(str); //path\upload\aa\1.jpg

path.format() 把对象拼接成路径

  1. var path = require("path");
  2. var str = path.format({
  3. dir: '/aa/bb/cc/d',
  4. base: 'index.html',
  5. name: 'index' });
  6. console.log(str); // /aa/bb/cc/d\index.html

path.parse() 把路径转换为对象

  1. var path = require("path");
  2. var str = path.parse("/aa/bb/cc/dd/index.html");
  3. console.log(str);
  4. /**
  5. {
  6. root: '/',
  7. dir: '/aa/bb/cc/dd',
  8. base: 'index.html',
  9. ext: '.html',
  10. name: 'index'
  11. }
  12. */

path.dirname() 获取文件所在的目录

  1. var path = require("path");
  2. var str = path.dirname("aa/index.html");
  3. console.log(str); // aa

path.basename() 获取文件名、文件的前缀名

获取文件名

  1. var path = require("path");
  2. var str = path.basename("D:/NodeJs_03/aa.js");
  3. console.log(str); // aa.js

文件的前缀名

  1. var path = require("path");
  2. var str = path.basename("D:/NodeJs_03/aa.txt.js", ".js");
  3. console.log(str); // aa.txt

path.extname() 获取文件的后缀名【如果文件没有后缀名,返回一个空】

  1. var path = require("path");
  2. var str = path.extname("D:/NodeJs_03/aa.txt.js");
  3. console.log(str); // .js

此外 path.extname() 常配合 url.parse(req.url).pathname 使用 (一)

demo_path.extname.zip-42.6kB 下载

目录

  1. project
  2. css
  3. a.css
  4. b.css
  5. img
  6. 1.jpg
  7. js
  8. a.js
  9. index.html
  10. demo.js

index.html

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Document</title>
  6. <link rel="stylesheet" href="./css/a.css">
  7. <link rel="stylesheet" href="./css/b.css">
  8. </head>
  9. <body>
  10. <h1>测试页面</h1>
  11. <p>hello world</p>
  12. <img src="./img/1.jpg" alt="">
  13. <script src="./js/a.js"></script>
  14. </body>
  15. </html>

node执行的 demo.js文件

  1. var http = require("http");
  2. var fs = require("fs");
  3. var url = require("url");
  4. var path = require("path");
  5. http.createServer((req,res)=>{
  6. var pathname = url.parse(req.url).pathname;
  7. var extname = path.extname(pathname);
  8. //处理小图标
  9. if(pathname == "/favicon.ico"){
  10. return;
  11. }
  12. if(pathname == "/"){
  13. fs.readFile("./project/index.html",(err,data)=>{
  14. res.writeHead(200,{'Content-Type':"text/html;charset=utf-8"});
  15. res.end(data);
  16. })
  17. return
  18. }
  19. fs.readFile("./project/" + pathname,(err,data)=>{
  20. getMime(extname,function(mime){
  21. res.writeHead(200,{"Content-Type": mime + ";charset=utf-8"});
  22. res.end(data);
  23. })
  24. })
  25. }).listen(8081);
  26. // 获取后缀名匹配的Content-Type类型
  27. function getMime(extname,callback){
  28. fs.readFile("./mime.json",(err,data)=>{
  29. var obj = JSON.parse(data);
  30. callback(obj[extname]);
  31. })
  32. }

效果图:
image_1d1t38pd21aqpn8917o21u3j19cll.png-35.6kB

主要代码: 具体看demo

  1. var pathname = url.parse(req.url).pathname;
  2. var extname = path.extname(pathname);
  3. fs.readFile("./project/" + pathname,(err,data)=>{
  4. getMime(extname,function(mime){
  5. res.writeHead(200,{"Content-Type": mime + ";charset=utf-8"});
  6. res.end(data);
  7. })
  8. })
  9. // 获取后缀名匹配的Content-Type类型
  10. function getMime(extname,callback){
  11. fs.readFile("./mime.json",(err,data)=>{
  12. var obj = JSON.parse(data);
  13. callback(obj[extname]);
  14. })
  15. }

作者 wendy
2019 年 1月 21日

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注