#javascript #vue.js #nuxt.js #vue-router
#javascript #vue.js #nuxt.js #vue-маршрутизатор
Вопрос:
Я пытаюсь создать одностраничное приложение, но, судя по всему, я не могу заставить функциональность работать именно таким образом.
Если вы попали непосредственно в /index.html файл, вы переходите на страницу 404.
Если вы перейдете к тому же маршруту без индекса, такого как «/», это сработает. Однако из-за среды, которую я использую, мне нужно загрузить index.html файлы непосредственно в URL-адресе, например, /mydirectory/index.html и /index.html и т.д.
Есть ли способ добиться этого?
Для nuxt я могу настроить все ссылки напрямую с помощью href= на правильный index.html файлы, но vuejs просто выдаст сообщение об ошибке, как будто он не понимает маршрут.
В качестве примера я попытался настроить маршруты в nuxt для просмотра прямых путей, и это также не удалось, никаких изменений не внес. (Я использую новую установку nuxt для тестирования)
router: {
routes: [
{
name: 'index',
path: '/index.html',
component: 'pages/index.vue'
},
{
name: 'inspire',
path: '/inspire/index.html',
component: 'pages/inspire.vue'
}
]
},
Загрузка в адресной строке /index.html (404 -ошибка) по сравнению с «/», который работает.
Если кто-нибудь спросит, зачем мне это нужно? Это не для веб-сайта, иначе мне не нужно было бы этого делать, но, основываясь на функциональности Vue / Nuxt, это должно быть возможно, потому что nuxt уже сгенерировал статические html-файлы для этих местоположений, и он загружается, но из-за маршрутизации он этого не понимает.
Я использую ssr: false
и target: 'static'
Редактировать:
Изучив глобальные объекты nuxt и обнаружив, что это детали маршрута
_route:
fullPath: "/index.html"
hash: ""
matched: []
meta: {}
name: null
params: {}
path: "/index.html"
query: {}
Очевидно, что путь указывает /index.html
, поэтому он может просто отлично считывать путь, и я даже вручную настроил это в конфигурации маршрутизатора, чтобы быть уверенным, но он даже не хочет его связывать, показывает ошибку 404.
Обновить:
После исследования и поиска в Интернете я придумал несколько вариантов, чтобы приблизиться к результату, который я ищу.
Во-первых, Nuxt удалил конфигурацию маршрутов, которую я пробовал выше, и в пользу использования extendRoutes(routes)
now, поэтому изначально она не работала. Однако, когда я попытался обновить сами маршруты, generate выдал бы ошибку, потому что он попытался создать каталоги для /index.html/index.html
not good. Так что это не сработает.
https://github.com/nuxt/nuxt.js/issues/112
Во-вторых, затем я наткнулся на этот пост, где вы можете использовать псевдоним маршрута, и он получил результат загрузки /index.html
и, похоже, загружается без ошибки 404.
extendRoutes(routes) {
routes.forEach((route) => {
const alias = route.path.length > 1 ? `${route.path}/index.html` : '/index.html'
route.alias = alias
})
},