Vue路由(router)基础知识

逃离我推掉我的手 2022-03-02 17:24 395阅读 0赞

1.

(1)安装路由

20190320223232381.png

(2)在main.js文件中创建路由并引入组件

  1. import Vue from 'vue'
  2. import App from './App.vue'
  3. // import router from './router'
  4. Vue.config.productionTip = false
  5. //路由设置
  6. import Router from 'vue-router' //在main.js中引入路由router
  7. import Home from './views/Home.vue' // 引入Home组件
  8. import About from './views/About' // 引入About组件,可以不加后缀.vue,名为About的文件唯一
  9. Vue.use(Router)//Vue调用路由
  10. const router = new Router({ //创建路由对象,对象里面的属性可以对路由进行设置
  11. routes: [
  12. {
  13. path: '/', //根路径
  14. component: Home //设置Home组件为根路径内容
  15. },
  16. {
  17. path: '/about',
  18. component: About,
  19. }
  20. ]
  21. })
  22. console.log(App);//vue loader会将vue文件变为对象形式。
  23. new Vue({
  24. router, //Vue实例中引入路由
  25. //render函数必须接受一个对象作为参数
  26. render: h => h(App)
  27. }).$mount('#app')

(3)在根路径后面有一个“#”,如何取消?

2019032023005472.png

还记得在安装vue-router的时候,路由器使用历史模式?(需要为生产中的索引回退设置适当的服务器)

20190320230355648.png

在router对象中,属性mode设置为history

  1. const router = new Router({ //创建路由对象,对象里面的属性可以对路由进行设置
  2. routes: [
  3. {
  4. path: '/', //根路径
  5. component: Home //设置Home组件为根路径内容
  6. },
  7. {
  8. path: '/about',
  9. component: About,
  10. }
  11. ],
  12. mode: 'history' //设置模式,效果:取消根路径后面的“#”
  13. })

(4)在App.vue 中,标签的作用是让路由配置的组件在页面中显示。router-view就是组件内容。

  1. <template>
  2. <div id="app">
  3. <div id="nav">
  4. <router-link to="/">Home</router-link> |
  5. <router-link to="/about">About</router-link>
  6. </div>
  7. <router-view/>
  8. </div>
  9. </template>

(5)router-link标签,点击跳转到指定路径中,类似于a标签,但是a标签每次跳转都会刷新重新加载,而router-link,已经加载过的页面,再次跳转到这里时,不再重新加载。经解析编译router-link在渲染的时候就是a标签

to=”path” path是router中路由对应path值 和 :to=”{name: 值}“ 路由中对应的name值

  1. <template>
  2. <div id="app">
  3. <router-link to="/">Home</router-link>
  4. <router-link to="/about">About</router-link>
  5. <router-view/>
  6. </div>
  7. </template>

注意:to属性也可以绑定动态的值,表达式:to = “data中传来的值”

路由跳转的另一种方法:绑定一个对象,对象中的name属性和属性值,是有router对象设置的

App.vue中的写法:

  1. <template>
  2. <div id="app">
  3. <router-link :to="{name: 'home'}">Home</router-link>
  4. <router-link :to="{name: 'about'}">About</router-link>
  5. <router-view/>
  6. </div>
  7. </template>

main.js中router对象的写法,添加一个name属性:

  1. const router = new Router({ //创建路由对象,对象里面的属性可以对路由进行设置
  2. routes: [
  3. {
  4. path: '/', //根路径
  5. name: 'home',
  6. component: Home //设置Home组件为根路径内容
  7. },
  8. {
  9. path: '/about',
  10. name: 'about',
  11. component: About,
  12. }
  13. ],
  14. mode: 'history' //设置模式,效果:取消根路径后面的“#”
  15. })
  1. 也可以通过一个router.js文件,单独来配置路由,将所有涉及到的路由都需要配置到这个文件中

(1)在main.js中引入router

  1. import Vue from 'vue'
  2. import App from './App.vue'
  3. import router from './router'
  4. Vue.config.productionTip = false
  5. console.log(App);//vue loader会将vue文件变为对象形式。
  6. new Vue({
  7. router, //Vue实例中引入路由
  8. //render函数必须接受一个对象作为参数
  9. render: h => h(App)
  10. }).$mount('#app')

(2)在router.js中配置路由

  1. import Vue from 'vue'
  2. import Router from 'vue-router'
  3. //下面的路径引入
  4. import Home from './views/Home.vue'
  5. import About from './views/About.vue'
  6. import Community from './views/Community.vue'
  7. import Learn from './views/Learn.vue'
  8. import Study from './views/Study.vue'
  9. Vue.use(Router)
  10. export default new Router({
  11. routes: [
  12. {
  13. path: '/',
  14. name: 'home',
  15. component: Home
  16. },
  17. {
  18. path: '/about',
  19. name: 'about',
  20. component: About
  21. // component: () => import(/* webpackChunkName: "about" */ './views/About.vue')
  22. },
  23. {
  24. path: '/community',
  25. name: 'community',
  26. component: Community
  27. },
  28. {
  29. path: '/learn',
  30. name: 'learn',
  31. component: Learn
  32. },
  33. {
  34. path: '/study',
  35. name: 'study',
  36. component: Study
  37. },
  38. ],
  39. mode: 'history'
  40. })

(3)在App.vue中使用路由标签

  1. <template>
  2. <div id="app">
  3. <router-link :to="{name: 'home'}">Home</router-link>
  4. <router-link :to="{name: 'about'}">About</router-link>
  5. <router-link to="learn">Learn</router-link>
  6. <router-link to="study">Study</router-link>
  7. <router-link to="community">Community</router-link>
  8. <router-view/>
  9. </div>
  10. </template>

3. css文件引入到main.js文件中就会作用到全局

  1. import Vue from 'vue'
  2. import App from './App.vue'
  3. import router from './router'
  4. import './assets/styles/reset.css' //css文件引入到main.js文件中就会作用到全局
  5. Vue.config.productionTip = false
  6. console.log(App);//vue loader会将vue文件变为对象形式。
  7. new Vue({
  8. router, //Vue实例中引入路由
  9. //render函数必须接受一个对象作为参数
  10. render: h => h(App)
  11. }).$mount('#app')

4. router-link标签在解析后默认为a标签,但也可以设置成别的标签,比如:tag=”li”

  1. <ul class="nav">
  2. <router-link :to="{name: 'home'}" tag="li">Home</router-link>
  3. <router-link :to="{name: 'about'}" tag="li">About</router-link>
  4. <router-link to="learn" tag="li">Learn</router-link>
  5. <router-link to="study" tag="li">Study</router-link>
  6. <router-link to="community" tag="li">Community</router-link>
  7. </ul>
  1. 在router.js 中配置原有属性变量

20190322160145996.png

这样就可以直接使用active和exact来进行样式设置了

发表评论

表情:
评论列表 (有 0 条评论,395人围观)

还没有评论,来说两句吧...

相关阅读

    相关 vue-router

    > 在这个世界上取得成就的人,都努力去寻找他们想要的机会,如果找不到机会,他们便自己创造机会。 > 你好,我是梦阳辰!期待与你相遇! 文章目录 01.什么是路

    相关 vue-routervue简介

    (一)命名路由 命名路由是目前开发当中使用最频繁的形式 通过一个名称 name:属性来标识一个路由显得更方便一些,特别是在链接一个路由,或者是执行一些跳转的时候,可以直