como todos saben, Windows hace rutas con barras invertidas, donde Unix hace rutas con barras diagonales. node.js proporciona path.join()
usar siempre la barra diagonal correcta. Entonces, por ejemplo, en lugar de escribir Unix, solo 'a/b/c'
lo haría usted en su path.join('a','b','c')
lugar.
Sin embargo, parece que, a pesar de esta diferencia, si no normaliza sus rutas (por ejemplo, usando path.join) y simplemente escribe rutas como a/b/c
node.js, no tiene problemas para ejecutar sus scripts en Windows.
Entonces, ¿hay algún beneficio sobre escribir path.join('a','b','c')
sobre 'a/b/c'
? Ambos parecen funcionar independientemente de la plataforma ...
path.join
se encargará de delimitadores innecesarios, que pueden ocurrir si los parches provienen de fuentes desconocidas (por ejemplo, entrada del usuario, API de terceros, etc.).Entonces
path.join('a/','b')
path.join('a/','/b')
,path.join('a','b')
ypath.join('a','/b')
todos darána/b
.Sin usarlo, generalmente haría expectativas sobre el inicio y el final de las combinaciones unidas, sabiendo que solo tienen una barra o ninguna.
fuente
Lo uso
path.join
para asegurar que los separadores de carpetas estén en los lugares correctos, no necesariamente para asegurar que use barras inclinadas hacia adelante y hacia atrás. Por ejemplo:Insertará correctamente el separador entre www y prueba
/var/www/test
fuente
path.join
sería en su otra respuesta aquí stackoverflow.com/questions/9027648/… . Esa respuesta me llevó aquí a otra pregunta respondida por ti mismo :)return baseDir + relativePath + filename;
. Lo reemplacé de inmediatoreturn path.join(baseDir, relativePath, filename);
. De hecho, es muy útil!Respuesta corta:
Todas las
fs.*
funciones (p. Ej.fs.open
, Etc.) tratan el nombre de ruta por usted. Por lo tanto, no necesita usarpath.join
usted mismo y hacer que su código sea ilegible.Respuesta larga:
Todas las
fs.*
funciones llamanpath._makeLong(path)
, que a su vez llamanpath.resolve(path)
, que tiene RegExps especiales para Windows, que tiene en cuenta la barra invertida\
o la barra diagonal/
. Puede verificarlo usted mismo mirando su código fuente en:fuente