一、在nodejs中path模块时使用频率很高的模块,其中不乏有很多API写得很模糊,但仔细琢磨下来,也不是很难理解。

1.获取文件所在路径

var path = require('path');
var test = '/test/test1/test2/test.js';
//获取文件所在的目录
console.log(path.dirname(test)); // /test/test1/test2

2.获取路径中的最后一部分

var path = require('path');
var test = '/test/test1/test2/test.js';
var test1 = '/test/test1/test2/';
var test2 = '/test/test1/test2'; //获取路径中的最后一部分 大部分时间可以用来判断文件名
console.log(path.basename(test)); //test.js
console.log(path.basename(test1)); // test2
console.log(path.basename(test2));//test2

3.获取文件的拓展名

var path = require('path');
var test = '/test/test1/test2/test.js';
var file1 = '.js';
var file2 = 'js.'; //获取文件的拓展名 其实是从最后一个 '.'开始截取的。特别需要注意的是
//如果 '.'开头 则返回 空 , 点结尾返回 '.'
console.log(path.extname(test)); //.js
console.log(path.extname(file1)); // ''
console.log(path.extname(file2)); //'.'

二、组合路径

1. 路径的拼接 path.join();

var path = require('path');
var test = '/test/';
var test1 = '/test1/';
var test2 = '/test2/'; console.log(path.join(test,test1,test2));
// '\test\test1\test2';
// 为什么会输出这个呢 ? 其实是把 path 拼接起来在normalize一下

2.path.resove(from,to);将to 解析为绝对路径

var path = require('path');

console.log(path.resolve('path.js')) //\express\path.js

3.path.parse();路径的解析

var path = require('path');

//路径的解析
console.log(path.parse('path.js'))
//{ root: '', dir: '', base: 'path.js', ext: '.js', name: 'path' }

三、规范路径 path.normalize();

  • 如果路径为空,返回.,相当于当前的工作路径。
  • 将对路径中重复的路径分隔符(比如linux下的/)合并为一个。
  • 对路径中的...进行处理。(类似于shell里的cd ..
  • 如果路径最后有/,那么保留该/
    var path = require('path');
    var filepath = '/tmp/demo/js/test.js'; var index = 0; var compare = function(desc, callback){
    console.log('[用例%d]:%s', ++index, desc);
    callback();
    console.log('\n');
    }; compare('路径为空', function(){
    // 输出 .
    console.log( path.normalize('') );
    }); compare('路径结尾是否带/', function(){
    // 输出 /tmp/demo/js/upload
    console.log( path.normalize('/tmp/demo/js/upload') ); // /tmp/demo/js/upload/
    console.log( path.normalize('/tmp/demo/js/upload/') );
    }); compare('重复的/', function(){
    // 输出 /tmp/demo/js
    console.log( path.normalize('/tmp/demo//js') );
    }); compare('路径带..', function(){
    // 输出 /tmp/demo/js
    console.log( path.normalize('/tmp/demo/js/upload/..') );
    }); compare('相对路径', function(){
    // 输出 demo/js/upload/
    console.log( path.normalize('./demo/js/upload/') ); // 输出 demo/js/upload/
    console.log( path.normalize('demo/js/upload/') );
    }); compare('不常用边界', function(){
    // 输出 ..
    console.log( path.normalize('./..') ); // 输出 ..
    console.log( path.normalize('..') ); // 输出 ../
    console.log( path.normalize('../') ); // 输出 /
    console.log( path.normalize('/../') ); // 输出 /
    console.log( path.normalize('/..') );
    });

四、其中不乏有些没有说清楚,按照API写一遍,加上自己的理解,大概就清楚了。

祝大家端午节快乐。

node path模块的更多相关文章

  1. node之path模块

    node之path模块 原文链接 //引用该模块 var path = require("path"); 1.路径解析,得到规范化的路径格式 对window系统,目录分隔为'', ...

  2. Node.js Path 模块

    Node.js path 模块提供了一些用于处理文件路径的小工具,我们可以通过以下方式引入该模块: var path = require("path") 方法 序号 方法 & ...

  3. Node.js实战项目学习系列(5) node基础模块 path

    前言 前面已经学习了很多跟Node相关的知识,譬如开发环境.CommonJs,那么从现在开始要正式学习node的基本模块了,开始node编程之旅了. path path 模块提供用于处理文件路径和目录 ...

  4. node 常用模块及方法fs,url,http,path

    http://www.cnblogs.com/mangoxin/p/5664615.html https://www.liaoxuefeng.com/wiki/001434446689867b2715 ...

  5. node(03)--利用 HTTP 模块 URl 模块 PATH 模块 FS 模块创建一个 WEB 服务器

    Web 服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等 Web 客户端提供文档,也可以放置网站文件,让全世界浏览:可以放置数据文件,让全世界下载.目前最主流的三个 We ...

  6. node常用模块---path

    path---用来提供文件路径和文件之间的处理的函数 node常用模块之path

  7. Node入门教程(8)第六章:path 模块详解

    path 模块详解 path 模块提供了一些工具函数,用于处理文件与目录的路径.由于windows和其他系统之间路径不统一,path模块还专门做了相关处理,屏蔽了彼此之间的差异. 可移植操作系统接口( ...

  8. 37.Node.js工具模块---处理和转换文件路径的工具 Path模块

    转自:http://www.runoob.com/nodejs/nodejs-module-system.html Node.js path 模块提供了一些用于处理文件路径的小工具,我们可以通过以下方 ...

  9. node.js入门学习(一)环境安装,REPL,fs模块,path模块,http模块

    一.node.js介绍 1.1.node.js是什么 官网首页总结:Node.js® 是一个基于 Chrome V8 引擎 的 JavaScript 运行时. 1)node.js是一个开发平台,就像j ...

随机推荐

  1. WPF DatePicker 添加水印效果

    这个控件没有水印属性,依然使用依赖属性解决 public class DatePickerHelper { public static object GetWatermark(DependencyOb ...

  2. ZJOI2018 round^2 游记

    Day0 一早起来6点左右,吃完早饭去班里拿了书包就来机房,说实话怕被打[手动滑稽]. 在车上大约经历了3个半小时的车程,终于到达了目的地:余姚.当然基本上大家的设备电量都不多了,除了某些上车睡觉的大 ...

  3. Linux部署python django程序-apache

    1.安装Apache 先卸载自带的httpd rpm -e httpd --nodeps 在网上下载四个文件 1.apr-1.4.6.tar.gz 2.apr-util-1.5.1.tar.gz 3. ...

  4. 人脸检测——MTCNN

    人脸检测——MTCNN .

  5. 一维码UPC A简介及其解码实现(zxing-cpp)

    UPC(Universal Product Code)码是最早大规模应用的条码,其特性是一种长度固定.连续性的条  码,目前主要在美国和加拿大使用,由于其应用范围广泛,故又被称万用条码. UPC码仅可 ...

  6. 1797: [Ahoi2009]Mincut 最小割

    1797: [Ahoi2009]Mincut 最小割 链接 分析: 题意为:问一条边是否可能存在于最小割中,是否一定存在于最小割中. 首先最小割的边一定是满流的边.且这条边点两个端点u.v中,至少一个 ...

  7. setInterval只执行一次的原因

    setInterval(arrow(),) 改为: setInterval(arrow,) 原因: arrow()这是一个函数调用,函数调用就会有返回值, 而arrow()没有返回值,所以这里的arr ...

  8. python-利用Python窗口可视化抽象开发山寨版翻译软件

    1.图片展示: 2.写出上面图式的小脚本需要利用python两个方面的知识: (1)可视化库 (需用库:tkinter) (2)简单爬虫知识 (需用库:requests) 注意:爬虫在获取翻译信息时, ...

  9. AJAX其实就是一个异步网络请求

    AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML).其实就是一个异步网络请求. 一.创建对象 var xmlhttp; if (w ...

  10. systemctl start nginx timeout

    昨儿个研究docker ,搭建私有仓库.想着用nginx代理一下仓库地址.方式使用80端口,于是愉快的下载,编辑,安装nginx.创建nginx.service作为系统启动服务. 结果......,多 ...