今天,我对 Javascript 中的相对路径的体验感到惊讶。我将情况归结为以下几点:
假设您有一个目录结构,例如:
app/
|
+--app.html
+--js/
|
+--app.js
+--data.json
我app.html
所做的就是跑js/app.js
<!DOCTYPE html>
<title>app.html</title>
<body>
<script src=js/app.js></script>
</body>
app.js
加载 JSON 文件并将其粘贴在开头body
:
// js/app.js
fetch('js/data.json') // <-- this path surprises me
.then(response => response.json())
.then(data => app.data = data)
数据是有效的 JSON,只是一个字符串:
"Hello World"
这是 . 的最小用法fetch
,但令我惊讶的是,我传递给的 URLfetch
必须是相对于app.html
而不是相对于app.js
. 我希望这条路径能够正常工作,因为data.json
和app.js
位于同一目录 ( js/
) 中:
fetch('data.json') // nope
有没有解释为什么会这样?