Vue Router(1)


Vue Router 是 Vue.js 的官方路由。它与 Vue.js 核心深度集成,功能包括:

1、嵌套路由映射

2、动态路由选择

3、模块化、基于组件的路由配置

4、路由参数、查询、通配符

5、展示由 Vue.js 的过渡系统提供的过渡效果

6、HTML5 history 模式或 hash 模式

7、URL的正确编码

用 Vue + Vue Router创建单页应用非常简单:

通过 Vue.js, 我们已经用组件组成了我们的应用。当加入 Vue Router 时,我们需要做的就是将我们的组件映射到路由上,让 Vue Router知道在哪里渲染它们。

 HTML

<script src="https://unpkg.com/vue@3">script>
<script src="https://unpkg.com/vue-router@4">script>

<div id="app">
  <h1>Hello App!h1>
  <p>
    
    
    
    <router-link to="/">Go to Homerouter-link>
    <router-link to="/about">Go to Aboutrouter-link>
  p>
  
  
  <router-view>router-view>
div>

router-link

请注意,我们没有使用常规的 a 标签,而是使用一个自定义组件 router-link 来创建链接。这使得 Vue Router 可以在不重新加载页面的情况下更改URL,处理URL的生成以及编码。

router-view

router-view 将显示与url对应的组件,你可以把它放在任何地方,以适应你的布局。

JavaScript

// 1. 定义路由组件.
// 也可以从其他文件导入
const Home = { template: '
Home
' } const About = { template: '
About
' } // 2. 定义一些路由 // 每个路由都需要映射到一个组件。 // 我们后面再讨论嵌套路由。 const routes = [ { path: '/', component: Home }, { path: '/about', component: About }, ] // 3. 创建路由实例并传递 `routes` 配置 // 你可以在这里输入更多的配置,但我们在这里 // 暂时保持简单 const router = VueRouter.createRouter({ // 4. 内部提供了 history 模式的实现。为了简单起见,我们在这里使用 hash 模式。 history: VueRouter.createWebHashHistory(), routes, // `routes: routes` 的缩写 }) // 5. 创建并挂载根实例 const app = Vue.createApp({}) //确保 _use_ 路由实例使 //整个应用支持路由。 app.use(router) app.mount('#app') // 现在,应用已经启动了!

通过调用 app.use(router), 我们可以在任意组件中以 this.$router 的形式访问它,并且以 this.$route 的形式访问当前路由:

// Home.vue
export default {
  computed: {
    username() {
      // 我们很快就会看到 `params` 是什么
      return this.$route.params.username
    },
  },
  methods: {
    goToDashboard() {
      if (isAuthenticated) {
        this.$router.push('/dashboard')
      } else {
        this.$router.push('/login')
      }
    },
  },
}

在整个文档中, 我们会经常使用 router 实例, 请记住, this.$router 与直接使用通过 createRouter 创建的 router 实例完全相同。我们使用 this.$router 的原因是,我们不想在每个需要操作路由的组件中都导入路由。