(一)安装vue
npm install -g @vue/cli //安装一次就可以
vue create 项目名称
cd 项目名称
npm run serve
(二)配置 vue.config.js (关闭保存代码错误提示)
module.exports = {
lintOnSave: false
}
(三)安装element (这步可以省略,跟路由没啥关系)
vue add element
(四)安装vue-router(路由)
第一步
npm install vue-router --save
第二步
- src下新建一个router.js
- 视图文件都要放在views
import Vue from "vue"
import Router from "vue-router"
Vue.use(Router)
export default new Router({
routers:[
{
path:'/',
name:'layout',
component:()=>import('./views/layout.vue'),
children:[
{
path:'/index',
name:'index',
component:()=>import('./views/index/index.vue')
}
]
},
{
path:'/login',
name:'login',
component:()=>import('./views/login/index.vue')
}
]
})
第三步
import Vue from 'vue'
import App from './App.vue'
inport './plugins/element.js'
import router from './router.js'
Vue.config.productionTip = false
new Vue({
router,
render: h => h(App),
}).$mount('#app')
vue-router二次封装
- 第一步
src下新建一个common下在新建一个config文件夹下新建一个router.js文件
- 第二步
更目录下的router.js文件里面的,routers数组剪切出来,留下routers
export default new Router({
<!---routers数组剪切出来,留下routers---->
routers
})
let routers = [
{
path:'/',
name:'layout',
redirect:{name:index}
component:()=>import('../../views/layout.vue'),
children:[
{
path:'/index',
name:'index',
component:()=>import('../../views/index/index.vue')
}
]
},
{
path:'/login',
name:'login',
component:()=>import('../../views/login/index.vue')
},
{
path:'*',
redirect:{name:index}
}
]
export default routers
import Vue from "vue"
import Router from "vue-router"
import routers from "./common/config/router.js"
Vue.use(Router)
export default new Router({ routers })
再次简化Vue-touter路由
let routers = [
{
path:'/',
name:'layout',
redirect:{name:index}
component:'layout',
children:[
{
component:'index/index'
},
{
component:'index/index'
}
]
},
{
component:'login/index'
},
{
path:'*',
redirect:{name:index}
}
]
function getRoutes (){
createRoute(routers)
return routes
}
function createRoute (arr){
for (let i = 0; i < arr.length; i++){
if(!arr[i].component) return
let val = getValue(arr[i].component)
arr[i].name = arr[i].name || val.replace(/\//g,'_')
arr[i].path = arr[i].path || `/${val}`
let componentFun = import(`../../view/${arr[i].component}.vue`)
arr[i].component = ()=>componentFun
if(arr[i].children && arr[i].children.lenght > 0){
createRoute(arr[i].children)
}
}
}
function getValue(str){
let val = str.lastIndexOf('/')
let val = str.substring(index+1,str.length)
if(val === 'index'){
return str.substring(index,-1)
}
return str
}
export default routers