Vue从入门到实战:感受前端路由
来自CloudWiki
目录
单页应用程序
传统Web应用程序:不同页面间跳转都是向服务器发起请求,然后向浏览器推送页面
单页应用程序中,不同视图的内容都是在同一个页面中进行渲染,页面间的跳转都是在浏览器端完成的,
这就需要用到前端路由。
在Vue.js中,可以使用官方的路由管理器Vue Router
Vue Router下载安装
方法1:引用网上CDN
<script src="https://unpkg.com/vue-router@3.3.4/dist/vue-router.js"></script>
方法2 下载引用
<script src="vue-router.js"></script>
方法3 NPM安装
npm install vue-router
HTML页面使用路由
设置导航链接
<p> <!-- 使用router-link组件来导航 --> <!-- 通过传入to属性指定链接--> <!-- <router-link>默认会被渲染成一个<a>标签 --> <router-link to="/news">新闻</router-link> <router-link to="/books">图书</router-link> <router-link to="/videos">视频</router-link> </p>
指定组件在何处渲染
<!-- 路由出口 --> <!-- 路由匹配到的组件将在这里渲染 --> <router-view></router-view>
当单击链接的时候,会在<router-view>所在的位置渲染组件的模板内容。可以把<router-view>理解为占位符。
定义路由组件
// 定义路由组件 // 可以从其他文件import进来 const news = { template: '<div>新闻页面</div>' } const books = { template: '<div>图书页面</div>' } const videos = { template: '<div>视频页面</div>' }
定义路由
将第1步设置的链接URL和组件对应起来
// 定义路由 // 每个路由应该映射到一个组件。 // 组件可以是通过Vue.extend()创建的组件构造器, // 或者只是一个组件选项对象。 const routes = [ { path: '/news', component: news }, { path: '/books', component: books }, { path: '/videos', component: videos } ]
创建VueRouter实例
创建VueRouter实例,将上一步定义的路由配置作为选项传递进去。
// 传递routes选项,创建 router 实例。 const router = new VueRouter({ routes // (缩写) 相当于 routes: routes })
将router选项注入根实例
将router选项注入根实例, 从而让整个应用程序具备路由功能。
// 创建和挂载根实例。 // 使用router选项注入路由,从而让整个应用都有路由功能 new Vue({ el: '#app', router: router })
完整代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>VUE第一个案例-helloWorld</title> <script src="https://cdn.staticfile.org/vue/2.4.2/vue.min.js"></script> <!-- 引入样式 --> <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css"> <!-- 引入组件库 --> <script src="https://unpkg.com/element-ui/lib/index.js"></script> <script src="https://unpkg.com/vue-router@3.3.4/dist/vue-router.js"></script> </head> <body> <div id="app"> <p> <!-- 使用router-link组件来导航 --> <!-- 通过传入to属性指定链接--> <!-- <router-link>默认会被渲染成一个<a>标签 --> <router-link to="/news">新闻</router-link> <router-link to="/books">图书</router-link> <router-link to="/videos">视频</router-link> </p> <!-- 路由出口 --> <!-- 路由匹配到的组件将在这里渲染 --> <router-view></router-view> </div> <script type> // 定义路由组件 // 可以从其他文件import进来 const news = { template: '<div>新闻页面</div>' } const books = { template: '<div>图书页面</div>' } const videos = { template: '<div>视频页面</div>' } // 定义路由 // 每个路由应该映射到一个组件。 // 组件可以是通过Vue.extend()创建的组件构造器, // 或者只是一个组件选项对象。 const routes = [ { path: '/news', component: news }, { path: '/books', component: books }, { path: '/videos', component: videos } ] // 传递routes选项,创建 router 实例。 const router = new VueRouter({ routes // (缩写) 相当于 routes: routes }) // 创建和挂载根实例。 // 使用router选项注入路由,从而让整个应用都有路由功能 new Vue({ el: '#app', router: router }) </script> </body> </html>