Как добавить в маршрутизатор vue.js исключение из одного слова в пути в одном маршруте?

#vue.js

#vue.js

Вопрос:

У меня есть такой путь: path: '/:id в маршруте. Как исключить из этого пути одно слово, которое может прийти? Я пробовал b(?:(?!word)w) b , в regex101 это работает, но когда я добавляю его в этот путь, как это path: '/:id(\b(?:(?!word)\w) \b)' , ничего не работает вообще. Справка…

if (!getToken()) { routerMap.push({ path: '/', component: Layout, children: [ { path: '/:identifier, name: 'CMSPage', component: () => import('@/views/cms/page'), props: true, }, ], }) }

Комментарии:

1. Почему вы хотите исключить это word ?

2. word например. Есть еще одно слово. Хотите исключить, потому что, если оно попадет на маршрут, перенаправление будет перенаправлено не в то место.

3. Каковы ваши маршруты? Пожалуйста, приведите нам несколько примеров возможных маршрутов.

Ответ №1:

Если вы попробуете свое определение пути в express-route-tester (ссылка найдена в Path-to-RegExp — library, используемой маршрутизатором Vue для сопоставления маршрутов), вы увидите, что оно соответствует только одной букве

  • вам нужно переместиться внутрь ( /:identifier(\b(?:(?!word)\w )\b) )
  • и все равно это не будет соответствовать, например wordss

Результат: /:identifier(b(?:(?!wordb)w )b)

Но, может быть, вы пытаетесь что-то решить с помощью регулярных выражений, что можно решить по-другому? Вы знаете, что маршрутизатор Vue принимает маршруты по порядку? Итак, если вы определяете два маршрута:

 /word
/:id
  

Первое будет иметь приоритет…

Комментарии:

1. Вот маршрут ` if (!getToken()) { routerMap.push({ путь: ‘/’, компонент: Макет, дочерние элементы: [ { путь: ‘/: идентификатор’, имя: ‘CMSPage’, компонент: () => импорт(‘@/views/cms/page’), props: true, }, ], }) }` Я хочу добавить в правила пути, подобные этому /:identifier(b(?:(?!notificationsb)w )b) . Но если я добавлю его, вообще ничего не работает. Что-то вроде этого…

2. Этого недостаточно. Извините, но с таким небольшим количеством информации мне нечего добавить к моему ответу…