日期:2014-05-16 浏览次数:20360 次
以下是在到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中是正斜杠。
?