bal*_*ton 125 unix windows path node.js
众所周知,Windows使用反斜杠做路径,其中Unix使用正斜杠进行路径.node.js提供path.join()始终使用正确的斜杠.因此,例如,'a/b/c'您只需编写Unix而不是编写Unix path.join('a','b','c').
但是,似乎尽管存在这种差异,但是如果不对路径进行规范化(例如使用path.join),并且只编写a/b/cnode.js之类的路径,则在Windows上运行脚本时没有问题.
那么,有没有写上任何好处path.join('a','b','c')了'a/b/c'?无论平台如何,两者似乎都有效...
ebo*_*man 98
Windows文件系统使用正斜杠或反斜杠作为路径分隔符没有问题(从DOS天开始就是这种情况).唯一真正的问题是Windows命令行处理器(或者更具体地说,Windows本机命令行实用程序)倾向于将正斜杠解释为选项说明符而不是路径组件.因此,如果需要将路径传递给作为子进程运行的Windows命令,则需要一个反向路径.此外,返回路径的Windows API调用(以及调用Windows API的高级语言的方法)将使用反斜杠,因此即使您没有将它们传递给子进程,也需要对它们进行规范化.
dro*_*nus 87
path.join 将处理不必要的分隔符,如果给定的路径来自未知来源(例如用户输入,第三方API等),则可能会出现这种情况.
所以path.join('a/','b') path.join('a/','/b'),path.join('a','b')并且path.join('a','/b')都会给予a/b.
如果不使用它,你通常会对加入的pathes的开始和结束做出预期,知道它们只有没有或有一个斜线.
Tim*_*ple 47
我path.join用来确保文件夹分隔符在正确的位置,不一定要确保它使用正斜杠和反斜杠.例如:
path.join("/var/www", "test")
Run Code Online (Sandbox Code Playgroud)
将在www和test之间正确插入分隔符 /var/www/test
Raf*_*ier 31
简短回答:
所有fs.*函数(例如fs.open,等)都会为您处理路径名.因此,您不需要使用path.join自己并使代码难以辨认.
答案很长:
所有fs.*函数调用path._makeLong(path),反过来调用path.resolve(path),具有特殊的RegExps for Windows,它考虑反斜杠\或正斜杠/.你可以自己查看它们的源代码:
| 归档时间: |
|
| 查看次数: |
79125 次 |
| 最近记录: |