一、path核心模块

①path.basename(path【,ext】)获取一个路径中的文件名

var path=require('path');
console.log(path.basename('C:/Files/nodejs/a.js'));//a.js
console.log(path.basename('C:/Files/nodejs/a.js','.js'));//a

②path.dirname(path)  获取一个路径中的目录

var path=require('path');
console.log(path.dirname('C:/Files/nodejs/a.js'));//C:/Files/nodejs

③path.extname(path) 获取一个路径中文件扩展名部分

var path=require('path');
console.log(path.extname('C:/Files/nodejs/a.js'));//.js

④path.isAbsolute(path) 判断一个路径是否为绝对路径,返回布尔值

var path=require('path');
console.log(path.isAbsolute('C:/Files/nodejs/a.js'));//true
console.log(path.isAbsolute('./a.js'));//false

⑤path.parse(path) 把路径解析为一个对象,包含root,dir,base,ext,name属性

var path=require('path');
console.log(path.parse('C:/Files/nodejs/a.js'));
/*
{ root: 'C:/',
dir: 'C:/Files/nodejs',
base: 'a.js',
ext: '.js',
name: 'a' }
*/

⑥path.join([paths]) 进行路径的拼接,不容易出错,为了避免手动拼接带来的低级错误,建议多使用这个方法来辅助拼接

var path=require('path');
console.log(path.join('C:/Files/nodejs','a.js'));//C:\Files\nodejs\a.js
console.log(path.join('C:/Files/nodejs/','/a.js'));//C:\Files\nodejs\a.js
console.log(path.join('C:\\Files\\nodejs','a.js'));//C:\Files\nodejs\a.js

二、动态获取路径的API

①nodejs在每个模块中,除了require、exports等模块相关API外,还有两个特殊的成员,_dirname 和 _filename

②_dirname可以动态获取当前文件模块所属目录的绝对路径,不受执行node目录所属路径的影响

③_filename可以动态获取当前文件的绝对路径,不受执行node目录所属路径的影响

④在文件操作中,使用相对路径是不可靠的,因为在nodejs中文件操作的路径被设计为相对执行node目录所处的路径(不是bug)

⑤所以为了解决这个问题,一个方案可以把相对路径改为固定绝对路径就可以,但是改为固定的绝对路径,如果项目文件移动了位置,执行的时候也会出错,所以也行不通

⑥所以就可以使用_dirname和_filename了,因为这两个API获取的既是绝对路径,又是动态的获取

⑦补充:模块中的路径标识和这里的路径没有关系,不受影响,模块中的路径标识还是相对于文件模块

Nodejs中的路径问题的更多相关文章

  1. nodejs中npm常用命令

    npm install <name>安装nodejs的依赖包 例如npm install express 就会默认安装express的最新版本,也可以通过在后面加版本号的方式安装指定版本, ...

  2. 在Nodejs中如何调用C#的代码

    最近需要在Nodejs中用到C#的代码,从网上了解到可以采用Edgejs来实现Nodejs与C#的代码交互, 直接复制网上的代码运行总是出各种错,填了不少坑,现在把自己的案例代码大致整理一下,方便以后 ...

  3. (转)nodejs中npm常用命令

    npm install <name>安装nodejs的依赖包 例如npm install express 就会默认安装express的最新版本,也可以通过在后面加版本号的方式安装指定版本, ...

  4. nodejs中Stream的理解

    在nodejs中可以通过fs模块读写文件,我们来看下fs模块提供的接口: fs.readFile(filename, callback) 异步读取文件. filename是读取文件的文件名,如果是相对 ...

  5. 探讨Nodejs中的作用域问题。

    在JS中有全局作用域和函数作用域,而在Nodejs中也自己的作用域,分为全局作用域(global)和模块作用域. js作用域: 以前学js的时候我们的全局对象是window,如: var a = 10 ...

  6. Nodejs基础:路径处理模块path总结

    模块概览 在nodejs中,path是个使用频率很高,但却让人又爱又恨的模块.部分因为文档说的不够清晰,部分因为接口的平台差异性. 将path的接口按照用途归类,仔细琢磨琢磨,也就没那么费解了. 获取 ...

  7. nodeJS中npm常见的命令

    常用的nodeJS中npm的命令:npm主要是node包管理和发布的工具.npm常用的命令:1:npm install <name> //(下载包) 下载后的包放在当前路径下面 npm i ...

  8. nodeJS中的包

    前面的话 Node组织了自身的核心模块,也使得第三方文件模块可以有序地编写和使用.但是在第三方模块中,模块与模块之间仍然是散列在各地的,相互之间不能直接引用.而在模块之外,包和NPM则是将模块联系起来 ...

  9. nodejs中的require,exports使用说明

    模块是一门语言编写大项目的基石,因此,了解如何组织.编写.编译.加载模块很重要.这里主要谈谈Node中的模块加载. 1.Node中的模块,主要使用require来加载模块,文件 require(&qu ...

随机推荐

  1. CLRS最大子数组问题

    今天我们一起来看一下关于最大子数组的一些问题.最大子数组的应用场景可以是这样的:有一天,你搞了一场投资开始炒股,这时你就会想,我怎样才能获得最大的利润呢,最简单的想法就是我在股票的最低价时买入,然后在 ...

  2. vue 路由跳转带参 方式query ,params

    a.vue向b.vue传值 a.vue this.$router.push({ path: '/payType', query: { putUpList: this.putUpList, name:' ...

  3. nginx静态文件不设置缓存

    找到nginx安装目录下的nginx.conf文件,再nginx里面添加如下的内容 location / { add_header Cache-Control no-cache; add_header ...

  4. C#——零散学习1

    C#——零散学习1 //结构体(与C语言相似) struct Position { public float x; public float y;         //不一定需要把结构体成员设置为pu ...

  5. ASP.NET MVC 页面静态化操作的思路

    本文主要讲述了在asp.net mvc中,页面静态化的几种思路和方法.对于网站来说,生成纯html静态页面除了有利于seo外,还可以减轻网站的负载能力和提高网站性能.在asp.net mvc中,视图的 ...

  6. 2019 迅雷java面试笔试题 (含面试题解析)

    本人3年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.迅雷等公司offer,岗位是Java后端开发,最终选择去了迅雷. 面试了很多家公司,感觉大部分公司考察的点都差不多 ...

  7. vue辅助函数mapStates与mapGetters

    状态管理器 <!-- store.js: --> import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) export de ...

  8. 常识之外:全表扫描为何产生大量 db file sequential read 单块读?

    原创 2016-07-05 熊军 Oracle   编辑手记:在理解Oracle技术细节时,我们不仅应该读懂概念,还要能够通过测试验证细节,理解那些『功夫在诗外』的部分,例如全表扫描和单块读. 开发人 ...

  9. select下拉框小DemoA

    <html> <head> <meta charset="utf-8"> <script src="jquery-1.9.1.m ...

  10. 关于header file、static、inline、variable hides的一点感想

    前言 先看一段代码 #ifndef _INLINE_H #define _INLINE_H template<typename T> static inline T my_max(T a, ...