Я хочу иметь один объект маршрута для следующих сценариев:
/a/123/b/bТо, что я пробовал, это:
{ путь: '(а/:а)?/б', ... }
Кажется, это работает при тестировании пути на Тестер экспресс-маршрутов, но только для path-to-regexp версии 0.1.7. Любая версия выше этой будет экранировать специальные символы.
Как это возможно с новой версией path-to-regexp, которую использует vue-router?
Они оба используют github.com/pillarjs/путь к регулярному выражению в соответствии с документами. Я добавил пример тестера экспресс-маршрутов, чтобы проиллюстрировать изменение поведения в разных версиях path-to-regexp.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Express Router и Vue Router разные, но если вы хотите создать маршрут с динамическим URL-адресом, то, возможно, вы можете использовать именованные маршруты из https://router.vuejs.org/guide/essentials/named-routes.html.
Например:
const router = new VueRouter({
routes: [
{
path: '(a/:a)?/b',
name: 'a',
component: SomeComponent
}
]
})
Тогда ваша навигация к SomeComponent должна иметь что-то вроде:
<router-link :to = "{ name: 'a', params: { a: 123 }}">SomeComponent</router-link>
Конечно они разные, но под капотом у них обоих используется path-to-regexpgithub.com/pillarjs/путь к регулярному выражению. Я добавил пример тестера экспресс-маршрутов, чтобы проиллюстрировать, что то, что вы предлагаете, работает для path-to-regexp@0.1.7, но не для >=1.0, что и использует vue-router. Как уже упоминалось в моем вопросе, я попробовал ответить на ваше предложение, но поскольку новейшая версия path-to-regexp кодирует специальные символы, она не работает.
Express Router и Vue Router — это разные сущности.