今天我在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
用法示例,但我惊讶地发现,我传递给fetch
的URL必须相对于app.html
而不是相对于app.js
。我希望这个路径可以工作,因为data.json
和app.js
在同一个目录(js/
)中:
fetch('data.json') // nope
这是为什么的解释呢?