1. 路径处理方法
__dirname 表示当前文件所在的目录的绝对路径
__filename 表示当前文件的绝对路径
module.filename ==== __filename 等价
process.cwd() 返回运行当前脚本的工作目录的路径,一般情况下不变,在process.chdir()后,或者shelljs.cd切换目录后会发生变化
process.chdir() 改变工作目录
2. 绝对路径
2.1 要获取node项目的根路径,可以使用 node-app-root-path 这个包
2.2 更好的写绝对路径的方式是使用best-require这个包
根目录使用~
require('~/application/apis/controllers/posts'); require('~/application/apis/services/rest'); require('~/application/apis/config');
别名目录使用:
//长目录设置别名 const ROOT_PATH = process.cwd(); require('best-require')(ROOT_PATH, { apis: ROOT_PATH + '/application/apis', controllers: ROOT_PATH + '/application/apis/controllers' });
//使用别名更简洁 require(':controllers/posts'); require(':apis/services/rest'); require(':apis/config');
2.3 在全局变量上挂载路径
//声明 var path = require('path') global.appRequire = function(path) { return require(path.resolve(__dirname, path)) } //使用 var User = appRequire('app/model/User')
3. path.join和path.resolve的区别
3.1 path.join 是连接路径,仅仅做路径的连接
console.log(path.join(__dirname,'a','b')); // 假如当前文件的路径是E:/node/1,那么拼接出来就是E:/node/1/a/b。 console.log(path.join(__dirname,'/a','/b','..')); // 路径开头的/不会影响拼接,..代表上一级文件,拼接出来的结果是:E:/node/1/a console.log(path.join(__dirname,'a',{},'b')); // 而且path.join()还会帮我们做路径字符串的校验,当字符串不合法时,会抛出错误:Path must be a string.
3.2 path.resolve 是解析绝对路径,将一个或多个连接后的路径解析为绝对路径,以应用程序为根目录,普通字符串代表子目录,/代表绝对路径根目录
3.2.1 /作为根目录,多个/开始的路径,只有最后一个有效,前面的被忽略
path.resolve('/a', '/b') // '/b'
3.2.2 总是返回一个以相对于当前的工作目录(working directory)的绝对路径
path.resolve('./a', './b') // '/Users/username/Projects/webpack-demo/a/b'
3.2.3 path.resolve()方法是以程序为根目录,作为起点,根据参数解析出一个绝对路径
console.log(path.resolve()); // 得到应用程序启动文件的目录(得到当前执行文件绝对路径) E:\zf\webpack\1\src console.log(path.resolve('a','/c')); // E:/c 因为/斜杠代表根目录,所以得到的就是E:/c console.log(path.resolve(__dirname,'img/so')); // E:\zf\webpack\1\src\img\so 这个就是将文件路径拼接,并不管这个路径是否真实存在。 console.log(path.resolve('wwwroot', 'static_files/png/', '../gif/image.gif')) // E:\zf\webpack\1\src\wwwroot\static_files\gif\image.gif
附Node.js获取项目根目录的小技巧
大家都知道node.js只提供了一个 dirname全局变量,通过 dirname可以获得“C:\wwwroot\yidata\server”。
这时需要用到path。
import path from 'path'; (ES6)或var path = require ( 'path ' ); path.join(dirname,'../')
即可获取到node.js的项目根目录。
path.join(dirname,'../app/img/favicon.ico')
即可获取目标文件。
总结
华山资源网 Design By www.eoogi.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
华山资源网 Design By www.eoogi.com
暂无评论...
更新日志
2024年09月25日
2024年09月25日
- 纯音入心系列纯音乐《天籁古筝》1CD[MP3][331MB]
- 男女对唱典藏天碟《发烧对唱·那个季节里的歌DSD》10CD[WAV]
- 群星2010-歌林精选辑[歌林][WAV+CUE]
- TrioZimbalist-PianoTriosofWeinberg,Auerbach,Dvorak(2024)[24-44,1]wav
- 群星.1992-滚石第一流台湾歌·12王牌大车拼【滚石】【WAV+CUE】
- 林子祥.1984-创作歌集【华纳】【WAV+CUE】
- 周汤豪.2010-周汤豪【华纳】【FLAC分轨】
- Mozart-TheStringQuintets-AmadeusQuartet,CecilAronowitz(2017)[24-44,1][WAV+CUE]
- JamesWilliamsDennisIrwin-Focus(2024,Red)[24-48]FLAC
- 藤泽麻衣《空みあげて》[WAV]
- 纯音入心系列纯音乐《中国古筝经典名曲》1CD[MP3][1.3GB]
- 纯音入心系列纯音乐《古筝新奏:岁月静好与筝语,细水流年与筝同》1CD[MP3][846.9MB]
- 670《脆弱敏感小女生》[320K/MP3][27.53MB]
- 曾琳.2011-好好爱我【南方】【WAV+CUE】
- 范晓萱.1995-RAIN【福茂】【WAV+CUE】