Я был удивлен опытом с относительными путями в Javascript сегодня. Ive сводило ситуацию к следующему:
Предположим, что у вас есть структура каталогов, например:
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
, но я удивлен, что URL-адрес, который я передаю в fetch
, должен относиться к app.html
вместо относительного app.js
. Я ожидаю, что этот путь будет работать, поскольку data.json
и app.js
находятся в одном каталоге (js/
):
fetch('data.json') // nope
Есть ли объяснение, почему это так?