Vue router - где хранить названия маршрутов? - PullRequest
0 голосов
/ 16 сентября 2018

Я создаю довольно большое приложение, используя Vue, и у меня много маршрутов, имен и логики.Я нашел отличный вопрос / ответ о Vue Router здесь , и он дал мне много идей, но я не смог найти ответ для себя.Если я что-то пропустил, пожалуйста, не стесняйтесь указывать мне в правильном направлении.

Вот мои проблемы:

  1. Переименование ада: всякий раз, когда я меняю название маршрута, я должен идти, чтобы найти все self.$router.replace({ name: 'OldRouteName' }) и изменить их.Может быть, это не кажется чем-то особенным, но это так, особенно в большом проекте
  2. Глобальный адский охранник: в некотором смысле это связано с # 1, где я полагаюсь на текстовые литералы дляпроанализируйте from и to и позвоните мне next({ name: 'RouteName', replace: true })

В списке есть еще несколько мелких вещей, но эти два важны для меня.Я думал о том, чтобы создать глобальный объект и сохранить там имена маршрутов, например, Vue.prototype.$myRoutes = {Index:'Index', Home: 'Home'} и т. Д., Но по какой-то причине это не так.Я надеюсь, что есть что-то лучше ?

Любая помощь приветствуется, спасибо!

1 Ответ

0 голосов
/ 16 сентября 2018

Точно так же, как вы можете хранить типы мутаций Vuex в константах , также вы можете хранить имена маршрутов.

Например,

// router/route-names.js
export const INDEX = "Index"
export const HOME = "Home"

Теперь, где бы они вам ни понадобились, вы просто импортируете из этого файла

import { INDEX, HOME } from '@/router/route-names'

Внесение изменений означает только редактирование одного файла.


Для точки № 2 вы можете хранить дополнительные данные в каждом маршруте meta собственность .Например

{
  name: ROUTE_A,
  path: '/route/a',
  meta: {
    nextRoute: { name: ROUTE_B, replace: true }
  }
}

Тогда вы можете использовать

next(from.meta.nextRoute)
...