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 ...
随机推荐
- 可以运行的Oracle Advanced Queue的例子
通过查阅网上文章,发现很多Advanced Queue的例子无法跑起来. 参考了英文网站,可以正常运行成功. http://www.orafaq.com/wiki/Advanced_Queueing ...
- eclipse - 新建jsp页面默认模板设置
有时候我们自己如果没有现成的JSP模板时,系统一般会自动生成如下页面: 这个页面显然并不是我们所需要的,所以我们需要修改默认模板 进入 修改 <%@ page language="ja ...
- 设计模式:代理模式 vs 装饰模式
参考文章:https://www.cnblogs.com/luoxn28/p/5535877.html 代理模式和装饰模式非常类似,甚至代码都类似. 二者最主要的区别是: 代理模式中,代理类对被代理的 ...
- STM8S——Clock control(CLK)
1.主时钟源 有四种时钟源可以用做主时钟: (1)1-24MHz高速外部晶体振荡器(HSE) (2)最大24MHz高速外部时钟信号(HSE user-ext) (3)16MHz高速内部RC振荡器(HS ...
- C# 代码备份数据库 ,不需要 其他 DLL
protected void Button1_Click(object sender, EventArgs e) { /// ///备份方法 /// ...
- CentOS安装log.io
官网 http://logio.org/ log.io是运行在node.js之上的 可通过浏览器访问服务器日志 类似于tail -f命令 它只负责实时传输数据 而不会去存储历史数据 npm insta ...
- kubenetes无法创建pod/创建RC时无法自动创建pod的问题
一.问题概述 问题1: 虽然每次通过yaml创建rc都显示成功了,但是 kubectl get pod却没显示任何的pod. 问题2: 直接通过yaml创建pod提示apixxx 问题3: 通过.js ...
- MPVUE多环境定义后台URL
小程序选定了mpvue作为开发框架,搭建开发环境和构建环境.自从用了Travis和Jenkins之后,再也回不到手工构建的时代了. 目的-自动构建 web项目中,自从前后台分离的结构形成,就形成了一个 ...
- nodejs 中jead模板改为ejs
var app = express(); // view engine setup app.set('views', path.join(__dirname, 'views')); app.set(' ...
- spring boot+mybatis+swagger搭建
环境概述 使用的开发工具:idea 2018 3.4 环境:jdk1.8 数据库:MariaDB (10.2.21) 包管理:Maven 3.5 Web容器:Tomcat 8.0 开发机系统:Wind ...