Vue-Router — это официальная библиотека маршрутизации Vue.js.
По словам авторов, Vue Router
«Выразительная, настраиваемая и удобная маршрутизация для Vue.js»
Сегодня в этом хорошо объясненном и легком для понимания блоге я хочу использовать вашу кривую обучения, познакомив вас с необходимыми функциями Vue Router, то есть с вложенными именованными представлениями.
Мы выберем общий вариант использования для нашей иллюстрации. Чтобы продолжить, вам нужно настроить проект Vue.js v3.
Я использую vite для создания своего первоначального проекта vue.
#npm v7+ npm create vite@latest vuerouter -- - template vue
После создания начальной структуры проекта запустите:
npm install
для установки всех зависимостей. После этого откройте проект в своем любимом редакторе кода, я использую код Visual Studio, затем перейдите к папке src внутри корневой папки вашего проекта.
очистить все внутри, main.js и app.vue. Также не стесняйтесь удалять файл style.css, который вам не понадобится для этой иллюстрации.
Теперь пришло время запачкать руки.
Сначала мы создадим новый каталог и назовем его views, вы можете назвать его как угодно. Внутри папки представлений для нашего примерного проекта мы создадим следующие файлы:
Мы будем использовать файл index.js для экспорта всех файлов .vue внутри папки представлений.
Давайте создадим наш первый экран. Перейдите к файлу app.vue и добавьте этот фрагмент кода, не стесняйтесь копировать и вставлять, так как это базовый файл vue.
<template> <h1> Vue Router Nested Named Views </h1> </tempate> <script> export default { name: "App" } </script>
В файл main.js добавьте следующий код:
import {createApp} from 'vue'; import App from './App.vue'; const app = createApp(App) app.mount('#app')
Мы будем использовать встроенный терминал vscode для этого примера проекта. В терминале выполните следующую команду, чтобы запустить приложение vue.
npm run dev
Перейдите в свой браузер и введите URL-адрес вашего терминала в адресную строку браузера. Наслаждайтесь тем, что вы видите.
Далее нам нужно установить библиотеку vue-router с помощью следующей команды:
npm install vue-router
Теперь давайте настроим наши маршруты. В папке src создайте файл, я назову его router.js, вы можете назвать его как угодно, если оно имеет смысл для вас.
Мы добавим следующий код в файл router.js:
import { createRouter, createWebHashHistory } from 'vue-router'; import { Settings, Email, Subscription, Profile, ChangeProfile, ViewProfile } from './views' const routes = [ { path: '/settings', component: Settings, name: 'settings', children: [ { path: 'email', components: {default: Email, subscriptions: Subscription}, name: 'email', }, { path: 'profile', components: { default: Profile, changeProfile: ChangeProfile, viewProfile: ViewProfile }, name: 'profile' } ] } ]; const router = createRouter({ history: createWebHashHistory(), routes, }); export { router };
Здесь мы импортируем два метода из библиотеки vue-router, методы createRouter и createWebHasHistory.
createRouter — создает экземпляр Router, который может использоваться приложением Vue.
createWebHashHistory — дает URL-адрес `https://example.com/folder#`
Мы также импортируем файлы, созданные в папке views, из файла index.js внутри папки views. Мы также определили массив маршрутов — маршруты — это массив объектов, который должен включать следующие свойства;
путь — строка, указывающая сегмент URL.
component —компонент Vue, содержимое которого должно отображаться при переходе к этому сегменту URL. Объекты маршрутов могут иметь другие необязательные свойства, такие как имя, дочерние элементы и т. д.
Мы создаем маршрут с path, /settings и используем компонент Settings. У этого маршрута есть дочерние маршруты, т. е. электронная почта и профиль, которые мы собираемся использовать для отображения именных маршрутов — Subscription, ChangeProfile, ViewProfile.
Обратите внимание, что мы отображаем несколько представлений, а безымянный маршрут принимает имя по умолчанию — . В объекте компонентов ключи становятся именами представления, а отображаемые компоненты — значениями.
В завершение мы создадим маршрутизатор с помощью метода createRouter и экспортируем его.
Давайте пойдем и изменим наш файл main.js, чтобы он выглядел так:
import {createApp} from 'vue'; import App from './App.vue'; import {router} from './router'; const app = createApp(App).use(router); app.mount('#app')
Мы только импортировали маршрутизатор и указали нашему приложению использовать только что созданный маршрутизатор.
Внутри папки views создайте нечто подобное для всех файлов .vue, кроме Settings.vue.
<template> <div> view profile </div> </template> <script> export default { name: "ViewProfile", } </script>
измените текст между div, чтобы он соответствовал каждому имеющемуся у вас файлу.
Теперь мы собираемся добавить следующий код в файл Settings.vue:
<template> <div class="grid"> <sidebar class="sidebar"> <h1>Settings</h1> <div class="side-nav"> <router-link to="/settings/email">Email</router-link> <router-link to="/settings/profile">Profile</router-link> </div> </sidebar> <main class="main"> <router-view name="subscriptions"></router-view> <router-view name="changeProfile"></router-view> <router-view name="viewProfile"></router-view> </main> </div> </template> <script> export default { name: 'Settings', } </script> <style> *, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; } body { padding: 0; margin: 0 !important; } .grid { display: grid; grid-template-columns: 4fr 8fr; grid-gap: 20px; } .main { background-color: #fff; } .sidebar { background-color: #1c2e4a !important; color: #fff; display: flex !important; flex-direction: column; /* justify-content: center; */ padding-top: 28px ; align-items: center; height: 100vh; } .side-nav{ margin: 16px 0 0 0; } a{ display: block; color: #fff; text-decoration: none; padding: 10px; font-size: 24px } </style>
Мы разделяем наш экран на боковую панель и основной раздел.
Затем мы добавляем навигационные ссылки в раздел боковой панели, чтобы помочь нам перейти к указанным сегментам URL-адресов. Для этого мы используем router-link.
router-link — позволяет пользователям перемещаться между различными представлениями в одностраничном приложении Vue.js (SPA). Мы указываем путь для перехода с помощью атрибута «to».
В основном разделе мы хотим отобразить содержимое представлений имен.
Чтобы отобразить несколько представлений, мы будем использовать более одного компонента ‹router-view›.
‹router-view›: визуализирует компонент, соответствующий текущему URL-маршруту.
Если атрибут имени не указан, отображается представление по умолчанию. чтобы отобразить определенное представление, мы дали им имена, и мы будем отображать их, используя их имена в качестве значения атрибута name.
ПРИМЕЧАНИЕ. Я не буду объяснять раздел стилей, так как он состоит из основных правил CSS для макета страницы. Не стесняйтесь копировать и вставлять как есть.
Наконец, давайте изменим наш файл App.vue, чтобы он выглядел следующим образом.
<template> <router-view></router-view> </template> <script> export default { data() { return { message: 'Hello from Vue' } } } </script>
Перейдите в свой браузер и обновите вкладку, на которой вы ввели ссылку, и подтвердите, видите ли вы такой экран:
Если вы не видели что-то близкое к этому, пожалуйста, не стесняйтесь начать читать этот блог с самого начала и никогда не уставать, пока не сделаете это правильно.
До скорого …