Я пытаюсь создать шаблон, который соответствует всем путям URL-адресов, кроме '/' или '/en', или '/en/', или '/es', или '/es/'

Я пробовал некоторые, но, похоже, есть особый способ заставить его работать с vue router:

routes.push({
    name: 'test',
    path: '/(myregexpattern)',
    component: resolve(__dirname, 'test/b.vue'),
});
0
yoyojs 7 Апр 2020 в 12:59

1 ответ

Вы можете использовать отрицательный просмотр вперед:

path : '/((?!en\/?$|es\/?$).+)'

Протестируйте его с помощью path-to-regexp. -router использует для разбора пути.

Пример: https://jsfiddle.net/ellisdod/b3sdqjmL/

Может быть проще использовать beforeEach для преобразования пути:

router.beforeEach((to, from, next) => {
  const routes = ['/','/en/','/es/']
  if ( !routes.some(x=> to.path===x) ) next('/mypath')
  else next()
})

-1
ellisdod 7 Апр 2020 в 16:08
Это не работает в моем случае, поэтому я предпочитаю использовать регулярное выражение
 – 
yoyojs
7 Апр 2020 в 15:02