NodeJS学习笔记——url和path

要进行路径的解析和判断,需要用到这两个模块,url和path;

url

url.parse()

基本用法是将一个字符串解析为一个对象,其第一个参数传入一个字符串:

var url = require('url');
var urlStr = 'http://user:[email protected]:8080/path/to/file?query=string#hash';

console.log(url.parse(urlStr));

//输出
// Url {
//     protocol: 'http:',
//     slashes: true,
//     auth: 'user:pass',
//     host: 'host.com:8080',
//     port: '8080',
//     hostname: 'host.com',
//     hash: '#hash',
//     search: '?query=string',
//     query: 'query=string',
//     pathname: '/path/to/file',
//     path: '/path/to/file?query=string',
//     href: 'http://user:[email protected]:8080/path/to/file?query=string#hash' }

可以通过属性名的方式获取所需要的值:

console.log(url.parse(urlStr).pathname);///path/to/file

url.resolve(from, to)

url.resolve() 方法会以一种 Web 浏览器解析超链接的方式把一个目标 URL 解析成相对于一个基础 URL。

url.resolve('/one/two/three', 'four');         // '/one/two/four'
url.resolve('http://example.com/', '/one');    // 'http://example.com/one'
url.resolve('http://example.com/one', '/two'); // 'http://example.com/two'

path

首先看这篇,不同环境下的相对路径与绝对路径,正斜杠与反斜杠的区别;
http://blog.csdn.net/u014801403/article/details/53384705
在Node中,path模块同样根据操作系统的不同而不同;

path 模块的默认操作会根据 Node.js 应用程序运行的操作系统的不同而变化。 比如,当运行在 Windows 操作系统上时,path 模块会认为使用的是 Windows 风格的路径。

例如,对 Windows 文件路径 C:\temp\myfile.html 使用 path.basename() 函数,运行在 POSIX 上与运行在 Windows 上会产生不同的结果:

在 POSIX 上:

path.basename('C:\\temp\\myfile.html');
// 返回: 'C:\\temp\\myfile.html'

在 Windows 上:

path.basename('C:\\temp\\myfile.html');
// 返回: 'myfile.html'

path.join()

path.join() 方法使用平台特定的分隔符把全部给定的 path 片段连接到一起,并规范化生成的路径。
长度为零的 path 片段会被忽略。 如果连接后的路径字符串是一个长度为零的字符串,则返回 '.',表示当前工作目录。
如果任一路径片段不是一个字符串,则抛出 TypeError。

console.log(path.join('/foo','bar','baz/asdf','..'));// \foo\bar\baz
// console.log(path.join('/foo',{},'bar'));// 抛出 'TypeError: Path must be a string. Received {}'

path.resolve()

path.resolve() 方法会把一个路径或路径片段的序列解析为一个绝对路径。
给定的路径的序列是从右往左被处理的,后面每个 path 被依次解析,直到构造完成一个绝对路径。 例如,给定的路径片段的序列为:/foo、/bar、baz,则调用 path.resolve('/foo', '/bar', 'baz') 会返回 /bar/baz。
如果处理完全部给定的 path 片段后还未生成一个绝对路径,则当前工作目录会被用上。
生成的路径是规范化后的,且末尾的斜杠会被删除,除非路径被解析为根目录。
长度为零的 path 片段会被忽略。
如果没有传入 path 片段,则 path.resolve() 会返回当前工作目录的绝对路径。

windows环境下

console.log(path.resolve('/foo/bar','./baz'));// C:\foo\bar\baz
console.log(path.resolve('/foo/bar','/tmp/file/'));// C:\tmp\file
console.log(path.resolve('wwwroot','static_files/png/','../gif/image.gif'));//C:\Users\Matthew\Desktop\nodejs\url\wwwroot\static_files\gif\image.gif

linux环境下

path.resolve('/foo/bar', './baz');
// 返回: '/foo/bar/baz'

path.resolve('/foo/bar', '/tmp/file/');
// 返回: '/tmp/file'

path.resolve('wwwroot', 'static_files/png/', '../gif/image.gif');
// 如果当前工作目录为 /home/myself/node,
// 则返回 '/home/myself/node/wwwroot/static_files/gif/image.gif'

你可能感兴趣的:(NodeJS学习笔记——url和path)