node path模块
一、在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模块的更多相关文章
- node之path模块
node之path模块 原文链接 //引用该模块 var path = require("path"); 1.路径解析,得到规范化的路径格式 对window系统,目录分隔为'', ...
- Node.js Path 模块
Node.js path 模块提供了一些用于处理文件路径的小工具,我们可以通过以下方式引入该模块: var path = require("path") 方法 序号 方法 & ...
- Node.js实战项目学习系列(5) node基础模块 path
前言 前面已经学习了很多跟Node相关的知识,譬如开发环境.CommonJs,那么从现在开始要正式学习node的基本模块了,开始node编程之旅了. path path 模块提供用于处理文件路径和目录 ...
- node 常用模块及方法fs,url,http,path
http://www.cnblogs.com/mangoxin/p/5664615.html https://www.liaoxuefeng.com/wiki/001434446689867b2715 ...
- node(03)--利用 HTTP 模块 URl 模块 PATH 模块 FS 模块创建一个 WEB 服务器
Web 服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等 Web 客户端提供文档,也可以放置网站文件,让全世界浏览:可以放置数据文件,让全世界下载.目前最主流的三个 We ...
- node常用模块---path
path---用来提供文件路径和文件之间的处理的函数 node常用模块之path
- Node入门教程(8)第六章:path 模块详解
path 模块详解 path 模块提供了一些工具函数,用于处理文件与目录的路径.由于windows和其他系统之间路径不统一,path模块还专门做了相关处理,屏蔽了彼此之间的差异. 可移植操作系统接口( ...
- 37.Node.js工具模块---处理和转换文件路径的工具 Path模块
转自:http://www.runoob.com/nodejs/nodejs-module-system.html Node.js path 模块提供了一些用于处理文件路径的小工具,我们可以通过以下方 ...
- node.js入门学习(一)环境安装,REPL,fs模块,path模块,http模块
一.node.js介绍 1.1.node.js是什么 官网首页总结:Node.js® 是一个基于 Chrome V8 引擎 的 JavaScript 运行时. 1)node.js是一个开发平台,就像j ...
随机推荐
- MFC 消息映射、分派和传递
几个重要的结构体: struct AFX_MSGMAP { AFX_MSGMAP* pBaseMessageMap; AFX_MSGMAP_ENTRY* lpEntries; } struct AFX ...
- 26-[Boostrap]-全局css样式,组件,控件
1.全局CSS样式 https://v3.bootcss.com/css/ <!DOCTYPE html> <html lang="zh-CN"> < ...
- CodeForces 593D Happy Tree Party [LCA+并查集]
题意:给一棵树,每条边有一个权值,给两种操作,第一种是询问y向下整除从a到b的最短路径中每条边的权值后y的值,第二种是改变某条边的权值. 思路:y的最大值为1e18,最多除大于等于2的数不超过60次即 ...
- cogs791 [HAOI2012] 音量调节
大水题 这种题谁不能1A谁就吔屎/退役吧(说的就是我) 设dp[i][j]表示调完前i个音量为j有没有可能 没了 // It is made by XZZ // Fei Fan Ya Xi Lie~~ ...
- [Vue warn]:vue-Failed to resolve directive: clipboard
前言 需求:移动端需要一个按钮,复制到剪切板,分享给好友(没有调用微信内置的分享接口) 插件 vue-clipboard2 环境:vue,node 安装:npm install --save vue- ...
- UWP 应用程序名称本地化以及商店显示名称本地化
大家应该都知道,在做多语言的时候,我们一般会让App名字也会随着语言变化而本地化. 比如我的App微识别 https://www.microsoft.com/store/productId/9PDSN ...
- jQuery瀑布流详解(PC及移动端)
前言 瀑布流布局已成为当今非常普遍的图片展示方式,无论是PC还是手机等移动设备上.这种布局图片的样式大概分为三种:等高等宽.等宽不等高.等高不等宽,接下来我们就最为普遍的等宽不等高形式来作为示例. 我 ...
- cpp-variable-lifetime
#include <cstdio> #include <iostream> using namespace std; class TmpClass; void FuncScop ...
- Python之元类详解
一.引子 元类属于Python面向对象编程的深层魔法,99%的人都不得要领,一些自以为搞明白元类的人其实也是自圆其说,点到为止,从队元类的控制上来看就破绽百出,逻辑混乱: 二.什么是元类 一切源自于一 ...
- 如何把word ppt 思维导图这类文件转化为高清晰度的图片(要干货只看粗体黑字)
我使用思维导图做学习笔记,最终绘制了一张比较满意的思维导图,想要分享出去,但由于现在思维导图软件众多,成品文件格式差别蛮大,不利于传播和打开,所以需要转化为普通图片,但笔者使用的导图软件导出转化成的图 ...