众所周知,Windows使用反斜杠处理路径,而Unix使用正斜杠处理路径。node.js提供了path.join()
来始终使用正确的斜杠。因此,例如,您可以使用path.join('a','b','c')
,而不是只编写Unix的'a/b/c'
。
然而,尽管有这样的差异,如果你不标准化你的路径(例如使用path.join),只是像a/b/c
一样写路径,node.js在Windows上运行你的脚本没有问题。
那么,相对于'a/b/c'
,编写path.join('a','b','c')
有什么好处吗?无论平台如何,两者似乎都能正常工作。
发布于 2012-03-21 14:15:52
Windows文件系统使用正斜杠或反斜杠作为路径分隔符都没有问题(从DOS时代起就是这样)。唯一真正的问题是,Windows命令行处理器(或者,更具体地说,Windows本机命令行实用程序)倾向于将正斜杠解释为选项说明符,而不是路径组件。因此,如果需要将路径传递给作为子进程运行的Windows命令,则需要使用带反斜杠的路径。此外,返回路径的Windows API调用(以及来自调用Windows API的高级语言的方法)将使用反斜杠,因此即使您没有将它们传递给子进程,也需要对它们进行规范化。
发布于 2014-02-28 04:59:48
path.join
将处理不必要的分隔符,如果给定的路径来自未知来源,则可能发生这种情况(例如,用户输入、第三方API等)。
所以path.join('a/','b')
path.join('a/','/b')
,path.join('a','b')
和path.join('a','/b')
都会给a/b
。
在不使用它的情况下,您通常会对连接的路径的起点和终点做出期望,因为您知道它们只有一个斜杠或一个斜杠。
发布于 2012-03-18 16:03:05
我使用path.join
来确保文件夹分隔符位于正确的位置,而不一定是为了确保它使用正斜杠和反斜杠。例如:
path.join("/var/www", "test")
将正确地在www和测试/var/www/test
之间插入分隔符
https://stackoverflow.com/questions/9756567
复制相似问题