#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. Этого недостаточно. Извините, но с таким небольшим количеством информации мне нечего добавить к моему ответу…