##path
- 在文件操作的过程中,都”必须”使用物理路径(绝对路径)
- path 模块提供了一系列与路径相关的 API
+ path.join([p1][,p2][,p3]…) => 连接多个路径
+ path.basename(p, ext) => 获取文件名
+ path.dirname(p) => 获取文件夹路径
+ path.extname(p) => 获取文件扩展名
+ path.format(obj) 和 path.parse(p)
+ path.relative(from, to) => 获取从 from 到 to 的相对路径
- 源码地址:
https://github.com/nodejs/node/blob/master/lib/path.js
- API地址
http://nodejs.org/api/path.html
##path模块使用
路径操作,非文件操作,所以无需path路径是否存在
```js
// PATH模块的使用
const path = require('path');
const temp = path.join(__dirname, './../测试文件.txt');
```
- path.basename(p[, ext])
```js
//语法: path.basename(p[, ext])
// 获取文件名
console.log(path.basename(temp));
// 获取文件名without扩展名
console.log(path.basename(temp, 'txt'));
```
结果:
```
测试文件.txt
测试文件
```
- path.delimiter
```js
//语法: path.delimiter
// 获取不同操作系统中默认的路径分隔符 Windows是; Linux是:
console.log(path.delimiter);
// 获取环境变量
console.log(process.env.PATH.split(path.delimiter));
```
结果:
```
:
[ '/usr/lib/jvm/java/bin',
'/usr/lib/jvm/java/bin',
'/usr/local/sbin',
'/usr/local/bin',
'/usr/sbin',
'/usr/bin',
'/sbin',
'/bin',
'/usr/games',
'/usr/local/games' ]
```
- path.dirname(p)
```js
//语法: path.dirname(p)
// 获取文件目录名称
console.log(path.dirname(temp));
```
- path.extname(p)
```js
// 语法:path.extname(p)
// 获取指定文件的扩展名,包含.
console.log(path.extname(temp));
```
结果
```
.txt
```
- path.parse(pathString)
```js
//语法: path.parse(pathString)
// 将一个路径字符串转换为一个对象(包含文件目录,文件名,扩展名)
var obj = path.parse(temp);
console.log(obj);
```
结果:
```js
{ root: '/',
dir: '/media/revin/WININSTALL/3/新建文件夹',
base: '测试文件.txt',
ext: '.txt',
name: '测试文件' }
```
- path.format(pathObject)
```js
//语法: path.format(pathObject)
// 将路径对象转字符串
var obj = path.parse(temp);
console.log(path.format(obj));
```
结果:
```
/media/revin/WININSTALL/3/新建文件夹/测试文件.txt
```
- path.isAbsolute(path)
```js
// 语法: path.isAbsolute(path)
//判断路径是否是绝对路径
// // true
console.log(path.isAbsolute(temp));
// // false
console.log(path.isAbsolute('../temp/1.txt'));
```
- path.join([path1][, path2][, ...])
```js
// 语法: path.join([path1][, path2][, ...])
// 拼合路径组成
console.log(path.join(__dirname, '..', './temp', 'a', '../../1.txt'));
console.log(path.join('/foo', 'bar', 'baz/asdf', 'quux', '..'));
```
结果:
```
/media/revin/WININSTALL/3/新建文件夹/1.txt
/foo/bar/baz/asdf
```
- path.normalize(p)
```js
//语法: path.normalize(p)
// 常规化一个路径(为windows设计)
var a = path.normalize('C:/dev\\abc//cba////1.txt');
console.log(a);
```
结果:
```
C:/dev\abc/cba/1.txt
```
- path.relative(from, to)
```js
// 语法:path.relative(from, to)
console.log(path.relative(__dirname,'/media/revin/WININSTALL/3/新建文件夹/code/0122.js'));
// 获取to 相对于from的相对路径
```
结果:
因为
当前路径是/media/revin/WININSTALL/3/新建文件夹/code/,to 相对于from的相对路径是
```
0122.js
```
- path.resolve([from ...], to)
```js
//语法: path.resolve([from ...], to)
//
console.log(path.resolve(__dirname, '..', './', './code'));
// 与join不同(resolve会执行cd /tmp到目录)
console.log(path.resolve(__dirname, '/tmp', './', './code'));
console.log(path.join(__dirname, '/tmp', './', './code'));
```
结果:
```
/media/revin/WININSTALL/3/新建文件夹/code
/tmp/code
/media/revin/WININSTALL/3/新建文件夹/code/tmp/code
```
- path.sep
```
// path.sep
// 获取当前操作系统中默认用的路径成员分隔符 windows:\ linux:/
console.log(path.sep);
```
结果:
```
/
```
- path.win32
- path.posix
```js
// 根据操作系统决定
//path.win32
// 允许在任意操作系统上使用windows的方式操作路径
path === path.win32
// 允许在任意操作系统上使用Linux的方式操作路径
// path.posix
path === path.posix
```
- 简介
- 配置安装
- window
- 基础知识
- Node 命令基本用法
- 进程和线程
- 调试
- 异步、回调
- 全局对象
- 非阻塞 I/O和事件驱动和非阻塞机制
- npm包概念
- 模块化
- 实现require和cache
- 核心模块操作
- fs文件系统操作
- 同步调用和异步调用
- 缓冲区处理(二进制数据)
- 文件读取
- 文件写入
- 例子:读取歌词文件显示
- 文件流
- 例子:文件复制
- 监视文件
- 其他文件操作
- 目录操作
- 例子:递归加载目录树
- path路径操作模块
- 网络操作
- URL 解析模块
- querystring查询字符串模块
- crypto加密解密模块
- Socket
- 例子:聊天室
- coffeescript
- Gulp-自动化构建工具
- Gulp实现前端构建
- Gulp后端构建
- 插件
- gulp-load-plugins 模块化管理插件
- gulp-minify-css 压缩css插件
- gulp-sass 将sass预处理为css
- gulp-less 将less预处理为css
- gulp-sourcemaps 插件
- gulp-concat 合并插件
- gulp-uglify 压缩JS插件
- gulp-util gulp常用工具库插件
- yargs插件
- gulp-nodemon 自动启动/重启插件
- coffee-script 插件
- gulp-coffee插件
- gulp-livereload 网页自动刷新
- Moment.js-处理时间插件
- express 前端框架
- Async-异步流程控制插件
- node-progress进度条插件
- JSHint-代码规范检查工具
- lodash -JavaScript 工具库
- 资料
- 框架所用包
- bodyParser