Vue:ElementUI练习(路由嵌套)路由嵌套 重定向(狂神)

在自己保存目录E:/course/Vue下输入命令创建项目:

Vue:ElementUI练习(路由嵌套)路由嵌套 重定向(狂神)_第1张图片

 第一个第二个使用默认,第三个输入kuangshen,第四个选择第一项:

Vue:ElementUI练习(路由嵌套)路由嵌套 重定向(狂神)_第2张图片

 下一步全部选择:n

Vue:ElementUI练习(路由嵌套)路由嵌套 重定向(狂神)_第3张图片

初始化项目就完成了:

Vue:ElementUI练习(路由嵌套)路由嵌套 重定向(狂神)_第4张图片

 Vue:ElementUI练习(路由嵌套)路由嵌套 重定向(狂神)_第5张图片

Vue:ElementUI练习(路由嵌套)路由嵌套 重定向(狂神)_第6张图片

在安装各种插件和组件:按照上面的命令一次输入

安装vue-router:改为cnpm install [email protected] --save-dev,其他正常输入:

Vue:ElementUI练习(路由嵌套)路由嵌套 重定向(狂神)_第7张图片

  • assets:用于存放资源文件
  • components:用于存放Vue功能组件
  • views:用于存放Vue视图组件
  • router:用于存放vue-router配置

  • 在views目录下创建首页视图Main.vue组件





  • 在views目录下创建登录页面视图Login.vue组件:使用ElementUI






  • 在router目录下创建一个名为index.js的vue-router路由配置文件
import Vue from 'vue'
import Router from 'vue-router'

//导入组件
import Main from '../view/Main'
import Login from '../view/Login'

Vue.use(Router)

export default new Router({
  routes:[
    {
      path:'/main',
      component:Main
    },
    {
      path:'/login',
      component:Login
    }
  ]
});
  • main.js中配置路由

import Vue from 'vue'
import App from './App'
//导入路由
import router from './router'

//导入elementUI
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'

//安转路由
Vue.use(router)
//使用elementUI
Vue.use(ElementUI)

new Vue({
  el: '#app',
  router,
  render: h => h(App) //ElementUI  给谁渲染
})

App.vue:






index.html;:



  
    
    
    hello-vue
  
  
    
  • 测试npm run dev

说明: 如果出现错误: 可能是因为sass-loader的版本过高导致的编译错误 ,可以去package.json文件中把sass-loder的版本降低,也有可能是node-sass版本过高,看报错内容修改相应的版本

Vue:ElementUI练习(路由嵌套)路由嵌套 重定向(狂神)_第8张图片

 修改版本后需要重新在项目中下载:

Vue:ElementUI练习(路由嵌套)路由嵌套 重定向(狂神)_第9张图片

重新启动项目:

Vue:ElementUI练习(路由嵌套)路由嵌套 重定向(狂神)_第10张图片

Vue:ElementUI练习(路由嵌套)路由嵌套 重定向(狂神)_第11张图片

Vue:ElementUI练习(路由嵌套)路由嵌套 重定向(狂神)_第12张图片

点击login或者在控制台输入Login:

Vue:ElementUI练习(路由嵌套)路由嵌套 重定向(狂神)_第13张图片

只要内容不为空就能进行跳转到Main:

Vue:ElementUI练习(路由嵌套)路由嵌套 重定向(狂神)_第14张图片

不输入密码:

Vue:ElementUI练习(路由嵌套)路由嵌套 重定向(狂神)_第15张图片

 Vue:ElementUI练习(路由嵌套)路由嵌套 重定向(狂神)_第16张图片

 路由嵌套:

嵌套路由又称子路由,在实际应用中,通常由多层嵌套的组件组合而成

  • 创建用户信息组件,在 views/user 目录下创建一个名为 Profile.vue 的视图组件





  • 在用户列表组件在 views/user 目录下创建一个名为 List.vue 的视图组件





  • 修改首页视图,我们修改 Main.vue 视图组件,此处使用了 ElementUI 布局容器组件



添加了组件,修改index.js:

//嵌套路由
children:[
  //:id
  {path:'/user/profile/:id',name:'UserProfile',component:UserProfile,props:true},
  {path:'/user/list',component:UserList}
]
import Vue from 'vue'
import Router from 'vue-router'

//导入组件
import Main from '../view/Main'
import Login from '../view/Login'

import UserList from '../view/user/List'
import UserProfile from '../view/user/Profile'


Vue.use(Router)

export default new Router({
  routes:[
    {
      path:'/main',
      component:Main,//嵌套路由
      children:[
        {path:'/user/profile',component:UserProfile},
        {path:'/user/list',component:UserList}
      ]
    },
    {
      path:'/login',
      component:Login
    }
  ]
});

点击登录后:Vue:ElementUI练习(路由嵌套)路由嵌套 重定向(狂神)_第17张图片

 Vue:ElementUI练习(路由嵌套)路由嵌套 重定向(狂神)_第18张图片

点击个人信息:

Vue:ElementUI练习(路由嵌套)路由嵌套 重定向(狂神)_第19张图片

点击用户列表 

Vue:ElementUI练习(路由嵌套)路由嵌套 重定向(狂神)_第20张图片

 参数传递和重定向

参数传递

方法一

 

  • 修改路由配置, 主要是router下的index.js中的 path 属性中增加了 :id 这样的占位符
{path:'/user/profile/:id',name:'UserProfile',component:UserProfile,props:true},
import Vue from 'vue'
import Router from 'vue-router'

//导入组件
import Main from '../view/Main'
import Login from '../view/Login'

import UserList from '../view/user/List'
import UserProfile from '../view/user/Profile'


Vue.use(Router);

export default new Router({
  routes:[
    {
      path:'/main',
      component:Main,//嵌套路由
      children:[
        //:id
        {path:'/user/profile/:id',name:'UserProfile',component:UserProfile},
        {path:'/user/list',component:UserList}
      ]
    },
    {
      path:'/login',
      component:Login
    }
  ]
});

Main.vue添加:

个人信息



个人信息

说明: 此时我们在Main.vue中的route-link位置处 to 改为了 :to,是为了将这一属性当成对象使用,注意 router-link 中的 name 属性名称 一定要和 路由中的 name 属性名称 匹配,因为这样 Vue 才能找到对应的路由路径

接收参数:

 Profile.vue






Vue:ElementUI练习(路由嵌套)路由嵌套 重定向(狂神)_第21张图片

 更改id为2:

Vue:ElementUI练习(路由嵌套)路由嵌套 重定向(狂神)_第22张图片

方法二 使用props 减少耦合 

  • 修改路由配置 , 主要在router下的index.js中的路由属性中增加了 props: true 属性
{path:'/user/profile/:id',name:'UserProfile',component:UserProfile,props:true},

import Vue from 'vue'
import Router from 'vue-router'

//导入组件
import Main from '../view/Main'
import Login from '../view/Login'

import UserList from '../view/user/List'
import UserProfile from '../view/user/Profile'


Vue.use(Router);

export default new Router({
  routes:[
    {
      path:'/main',
      component:Main,//嵌套路由
      children:[
        //:id
        {path:'/user/profile/:id',name:'UserProfile',component:UserProfile,props:true},
        {path:'/user/list',component:UserList}
      ]
    },
    {
      path:'/login',
      component:Login
    },
    {// 重定向
      path:'/goHome',
      redirect:'/main'
    }
  ]
});
  • 在Profile.vue接收参数为目标组件增加 props 属性





 重定向

跳转页面

Vue 中的重定向是作用在路径不同但组件相同的情况,用于跳转路径

  • 在router/index.js配置重定向路径
{// 重定向
  path:'/goHome',
  redirect:'/main'
}
import Vue from 'vue'
import Router from 'vue-router'

//导入组件
import Main from '../view/Main'
import Login from '../view/Login'

import UserList from '../view/user/List'
import UserProfile from '../view/user/Profile'


Vue.use(Router);

export default new Router({
  routes:[
    {
      path:'/main',
      component:Main,//嵌套路由
      children:[
        //:id
        {path:'/user/profile/:id',name:'UserProfile',component:UserProfile,props:true},
        {path:'/user/list',component:UserList}
      ]
    },
    {
      path:'/login',
      component:Login
    },
    {// 重定向
      path:'/goHome',
      redirect:'/main'
    }
  ]
});

Main.vue,添加:


   
    返回首页




点击回到首页 

Vue:ElementUI练习(路由嵌套)路由嵌套 重定向(狂神)_第23张图片

 

你可能感兴趣的:(#,Vue总结,前端,javascript,开发语言)