日期:2014-05-16  浏览次数:20355 次

NodeJS记录(二)

以下是在到r.js的build/jslib/build.js和build/jslib/node/file.js时碰到的node相关知识点。

?

一、获取当前执行js文件的真实路径

?

node中使用fs模块的fs.realpathSync方法。如目录C:\node\b.js,b.js内容如下

?

var fs = require('fs');

// 点号表示当前文件所在路径
var str = fs.realpathSync('.');
console.log(str);

?

执行b.js文件,控制台输出如下

?

?

有时我们需要将realpathSync返回的路径中的反斜杠转成正斜杠,r.js的file.js中添加了一个函数

?

function frontSlash(path) {
    return path.replace(/\\/g, '/');
}

?

?

二、将路径字符串标准化

?

使用node的path模块normalize方法可以将路径标准化,如多个斜杠只保留一个。

?

var path = require('path');
// bar后有两个斜杠
var str = path.normalize('/foo/bar//baz');
// 格式化后只保留一个
console.log(str);

?

需要注意“..”和“.”。斜杠后加一个点“.”没有意义可以删除,如以下str1和str2是等价的

?

var path = require('path');
var str1 = path.normalize('/foo/bar/baz');
var str2 = path.normalize('/foo/bar/baz/.');
console.log(str1);
console.log(str2);
?

两个点“..”会返回上一级目录,如

?

var path = require('path');
var str1 = path.normalize('/foo/bar/baz');
var str2 = path.normalize('/foo/bar/baz/..');
console.log(str1);
console.log(str2);

执行后结果如下

?

?

以上截图可看出路径输出的都是反斜杠。需要注意下,windows中输出的路径是反斜杠,linux中是正斜杠。

?