gpt4 book ai didi

node.js - Node js/Express js 相对路径(点或 __dirname 或不带任何前缀)?

转载 作者:IT老高 更新时间:2023-10-28 23:01:21 24 4
gpt4 key购买 nike

我正在查看 Nodejs/expressjs,并且看到不同的教程使用 __diranme + "/my_folder""./my_folder" 或仅使用 “我的文件夹”.

例子:

app.use("/static", express.static(__dirname + "/my_folder"));
app.use("/static", express.static("./my_folder"));
app.use("/static", express.static("my_folder"));

我都试过了,它们似乎都有效;相对路径应该使用哪一个?

我也见过 require('./my_file.js')require('my_file')。有区别吗?我应该使用什么?

最佳答案

几乎所有将文件路径作为参数的函数(除了 require),都会在某一时刻使用 fs 模块中的函数来读取或写入它们.

Node.js documentation for fs module说:

Relative path to filename can be used, remember however that this path will be relative to process.cwd().

当您考虑这一点时,要使这些函数的行为有所不同,将需要很大的技巧。毕竟,fs 函数是常规的 Javascript,它们没有特殊的访问权限来获取调用者的信息。他们唯一可以访问的 __dirname 是他们自己的模块(核心 fs 模块)的 __dirname

require 函数 可以解析相对于当前 __dirname 的路径,而无需明确指定,这是因为 require 是它出现的每个文件的唯一函数。这样,​​它可以访问当前模块的细节,尤其是它的路径。

您的代码恰好可以工作的原因是,目前,上面出现的 app.js(或类似代码)恰好与 process.cwd( ) 目前是。 IE。使用 node app.js 启动应用程序会起作用,而使用 node myappdir/app.js 启动应用程序(从其父目录运行)则不会。 process.cwd() 会有所不同。

只要您记住相对路径将通过 process.cwd() 解析,那么您可以使用更短的语法。在某些情况下,它可能是一个优势。它确实使您的代码依赖于它的调用方式。我个人更喜欢使用 __dirname,因为它对于正在发生的事情更加透明,并且相对路径与您在同一文件的 require 语句中使用的路径一致。

关于node.js - Node js/Express js 相对路径(点或 __dirname 或不带任何前缀)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16727045/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com