前言

前面已经学习了很多跟Node相关的知识,譬如开发环境、CommonJs,那么从现在开始要正式学习node的基本模块了,开始node编程之旅了。

path

path 模块提供用于处理文件路径和目录路径的实用工具。 它可以使用以下方式访问:

const path = require('path');

【path.normalize(path)】

path.normalize() 方法规范化给定的 path,解析 '..' 和 '.' 片段。

11_path_normalize.js

const { normalize } = require('path');
// 输入两个不规范的路径
console.log( normalize('usr/local//bin') );
console.log( normalize('usr/local/../bin') );

输出结果:

【path.join([...paths])】

path.join() 方法使用平台特定的分隔符作为定界符将所有给定的 path 片段连接在一起,然后规范化生成的路径。

11_path_join.js

const { join } = require('path');
console.log(join('/usr','local','bin/')); // 传入3个路径,且中间的路径不规则

输出:

【path.resolve([...paths])】

path.resolve() 方法将路径或路径片段的序列解析为绝对路径。如果没有传入 path 片段,则 path.resolve() 将返回当前工作目录的绝对路径。

11_path_resolve.js

const { resolve } = require('path');
console.log(resolve('./')); // 看下当前的路径的绝对路径

输出:

【basename、extname、dirname】

basename: 返回 path 的最后一部分,类似于 Unix 的 basename 命令。 尾部的目录分隔符将被忽略

extname: 返回 path 的扩展名,从最后一次出现 .(句点)字符到 path 最后一部分的字符串结束。

dirname: 返回 path 的目录名,类似于 Unix 的 dirname 命令。 尾部的目录分隔符将被忽略

const { basename, dirname, extname } = require('path');
const filePath = '/usr/local/bin/e.text';
console.log(basename(filePath));
console.log(dirname(filePath));
console.log(extname(filePath));

输出:

【parse、format】

parse: 方法返回一个对象,其属性表示 path 的重要元素。 尾部的目录分隔符将被忽略

format: 从对象返回路径字符串。 与 path.parse() 相反

const { parse, format} = require('path');

const filePath = '/usr/local/node_modules/n/package.json';

console.log(parse(filePath));
console.log(format(parse(filePath)));

输出:

【sep、delimiter、win32、posix】

sep:提供平台特定的路径片段分隔符:Windows 上是 \。POSIX 上是 /。

delimiter:提供平台特定的路径定界符:; 用于 Windows ,: 用于 POSIX

win32:属性提供对特定于 Windows 的 path 方法的实现的访问

posix: 属性提供对 path 方法的 POSIX 特定实现的访问。

const { sep, delimiter, win32, posix } = require('path');

console.log('sep: ', sep);
console.log('win sep: ', win32.sep); console.log('PATH', process.env.PATH); console.log('delimiter: ', delimiter);
console.log('win delimiter: ', win32.delimiter);

输出:

最后对之前接触过的路径做一个总结:

  • __dirname , __filename 总是返回文件的绝对路径
  • process.cwd() 总是返回执行node命令所在文件夹

小结

通过本文我们学习了path模块的一些用法,文章只是列举了一些常用的方法,具体可以去node的官方文档查看更多方法。

Node.js实战项目学习系列(5) node基础模块 path的更多相关文章

  1. Node.js实战项目学习系列(4) node 对象(global、process进程、debug调试)

    前言 在之前的课程我们学习了Node的模块化规则,接下来我们将学习下 Node的几个新特性:global ,process进程,debug调试 global 跟在浏览器中的window一样都是全局变量 ...

  2. Node.js实战项目学习系列(1) 初识Node.js

    前言 一直想好好学习node.js都是半途而废的状态,这次沉下心来,想好好的学习下node.js.打算写一个系列的文章大概10几篇文章,会一直以实际案例作为贯穿的学习. 什么是node Node.js ...

  3. Node.js实战项目学习系列(2) 开发环境和调试工具

    前言 上一节让我们对Node.js有一个初步的了解,那么现在可以开始正式学习下Node.js的开发了,但是任何一门语言要设计到开发,就必须先学习开发环境以及调试.本文将主要讲解这些内容. 本文涉及到的 ...

  4. Node.js实战项目学习系列(3) CommonJS 模块化规范

    前言 想开始编写Node.js代码,那么我们就必须先熟悉它的模块化规范CommonJS,本文将详细讲解CommonJS规范 本文代码 >>> github 地址 CommonJS N ...

  5. iKcamp团队制作|基于Koa2搭建Node.js实战项目教学(含视频)☞ 环境准备

    安装搭建项目的开发环境 视频地址:https://www.cctalk.com/v/15114357764004 文章 Koa 起手 - 环境准备 由于 koa2 已经开始使用 async/await ...

  6. 前端(Node.js)(3)-- Node.js实战项目开发:“技术问答”

    1.Web 与 Node.js 相关技术介绍 1.1.Web应用的基本组件 web应用的三大部分 brower(GUI)<==>webserver(business logic.data ...

  7. 开始连载啦~每周2更共11堂iKcamp课|基于Koa2搭建Node.js实战项目教学(含视频)| 课程大纲介绍

  8. Node.js实战10:“流”是Node.js最强大的功能之一。

    流是Nodejs的高级应用,掌握流的使用,才能真正胜任NodeJS开发. Nodejs中,流是基于事件的API,用于管理和处理数据,而且效率很好! 什么是流? 流是一个抽象接口,Node 中有很多对象 ...

  9. Node.js 实战 & 最佳 Express 项目架构

    Node.js 实战 & 最佳 Express 项目架构 Express Koa refs https://github.com/xgqfrms/learn-node.js-by-practi ...

随机推荐

  1. 批处理基础知识-EXIT

    本文主要介绍批处理EXIT命令的使用. 阅读须知: 在开始阅读本文之前,您需要知道批处理CALL命令和ERRORLEVEL相关知识,若您没有接触过类似信息,建议goole或baidu. EXIT命令格 ...

  2. 我的第一个python web开发框架(35)——权限数据库结构设计

    接下来要做的是权限系统的数据库结构设计,在上一章我们了解了权限系统是通过什么来管理好权限的,我们选用其中比较常用的权限系统来实现当前项目管理要求. 下面是我们选择的权限系统关系模型: 从以上关系可以看 ...

  3. centos7下git版本升级及gitlab安装

    centos系统自带的git版本过低,当使用git拉取.推送.克隆的时候可能会报错,常见的错误: error: The requested URL returned error: 401 Unauth ...

  4. 001_JavaScript数组常用方法总结及使用案例

    一. https://msdn.microsoft.com/zh-cn/library/ff679976(v=vs.94).aspx 二.ip地址转换成对应的二进制. const ip='172.16 ...

  5. 分治FFT的三种含义

    分治FFT是几个算法的统称.它们之间并无关联. 分治多项式乘法 问题如求\(\prod_{i=1}^na_ix+b\). 若挨个乘复杂度为\(O(n^2\log n)\),可分治做这件事,复杂度为\( ...

  6. PHP之环境配置

    我们的网站一般从开发到上线,整个过程会经历三个过程,本地开发->测试服测试->线上生产环境    对于不同环境下的配置也会不同,对于区分不同的环境是十分重要的. 1 域名判断法 使用的较多 ...

  7. Linux Redhat 7.6 操作系统 下载安装详解

    redhat 系统镜像分享 [百度网盘分享] (https://pan.baidu.com/s/1ALM6v1dAtPwmEt2tmyTghg ) 提取码:2i4o redhat 7.6版本安装详解 ...

  8. asp.net core Serilog的使用

    先贴上关于使用这个日志组件的一些使用方法,等有时间了在吧官方的文档翻译一下吧,现在真是没时间. Serilog在使用上主要分为两大块: 第一块是主库,包括Serilog以及Serilog.AspNet ...

  9. Linux 学习 (五) 压缩与解压缩命令

    Linux达人养成计划 I 学习笔记 常用压缩格式:.zip | .gz | .bz2 | .tar.gz | .tar.bz2 .zip zip 压缩文件名 源文件:压缩文件 zip -r 压缩文件 ...

  10. 前端基础之BOM和DOM(响应式布局、计时器、搜索框、select联动)

    一.BOM和DOM JavaScript分为 ECMAScript,DOM,BOM. BOM(Browser Object Model)是指浏览器对象模型,它使 JavaScript 有能力与浏览器进 ...