# New Page
If you are familiar with the vue-router
then it will be very simple.
First add the route to the @/router/index.js
.
Such as: add an excel page
{
path: '/excel',
component: Layout,
redirect: '/excel/export-excel',
name: 'excel',
meta: {
title: 'excel',
icon: 'excel'
}
}
TIP
It just creates a blank route based on 'layout', and you also need to add a route to the 'children' below it.
{
path: '/excel',
component: Layout,
redirect: '/excel/export-excel',
name: 'excel',
meta: {
title: 'excel',
icon: 'excel'
},
children: [
{
path: 'export-excel',
component: ()=>import('excel/exportExcel'),
name: 'exportExcel',
meta: { title: 'exportExcel' }
}
]
}
This sidebar will appear the menu-item
TIP
Since children
only declares one route below, there will be no expansion arrow. If the number of routes under children
is greater than 1, there will be an expansion arrow, as shown below.
If you want to ignore this automatic decision, you can use alwaysShow: true
, so that it will ignore the previously defined rule and display the root route. See the Router and Nav for details.
{
path: '/excel',
component: Layout,
redirect: '/excel/export-excel',
name: 'excel',
meta: {
title: 'excel',
icon: 'excel'
},
children: [
{ path: 'export-excel', component:()=>import('excel/exportExcel'), name: 'exportExcel', meta: { title: 'exportExcel' }},
{ path: 'export-selected-excel', component:()=>import('excel/selectExcel'), name: 'selectExcel', meta: { title: 'selectExcel' }},
{ path: 'upload-excel', component:()=>import('excel/uploadExcel'), name: 'uploadExcel', meta: { title: 'uploadExcel' }}
]
}
The sidebar will appear the submenu
.
# Nested Routes
If you have a nested Route, such as @/views/nested,
Don't forget to manually add an < router-view >
to the root file of the secondary directory.
<!-- parent view -->
<template>
<div>
<!-- xxx html dom -->
<router-view />
</div>
</template>
Such as: @/views/nested/menu1/index.vue.
Note: As many <router-view>
as the level of routes nested.
# Create View
After adding the route, create a view under the @/views
. As usual, a router correspond
a view.
Suggestion if a component or utils function only used in this view, just create a component folder under this view, lt is more convenient for each module to maintain its own utils
or components
.
# Create Api
Finally, under the @/api folder, create the corresponding api service for this module.
# Create Component
Personally write vue project habits, the global @/components
will only write some global components, such as rich text, various search components, packaged date components, etc. can be shared components. Each page or module-specific business component is written under the current views. Such as: @/views/article/components/xxx.vue
. This split greatly reduces maintenance costs.
**Remember that the biggest benefit of splitting components is not shared code but maintainability! **
# Create Style
The page's style and components are the same. The global @/style
writes a global common style. The style of each page is written under the current views
. Please remember to add scoped
or namespace to avoid Causes global style pollution.
<style>
/* global styles */
</style>
<style scoped>
/* local styles */
.xxx-container{
/* name scoped */
xxx
}
</style>