美文网首页
Vue前端路由的单页应用vue-router

Vue前端路由的单页应用vue-router

作者: 昊啊昊儿哟 | 来源:发表于2018-08-26 00:35 被阅读42次

什么是单页应用?

单页应用(single page web application,SPA),是在一个页面完成所有的业务功能,浏览器一开始会加载必需的HTML、CSS和JavaScript,之后所有的操作都在这张页面完成,这一切都由JavaScript来控制。

  • 单页应用优缺点
    • 优点

      • 操作体验流畅
      • 完全的前端组件化
    • 缺点

      • 首次加载大量资源(可以只加载所需部分)
      • 对搜索引擎不友好
      • 开发难度相对较高

单页应用的原理

  • Hash路由
    • 利用URL上的hash,当hash改变不会引起页面刷新,所以可以利用 hash 值来做单页面应用的路由,
      并且当 url 的 hash 发生变化的时候,可以触发相应 hashchange 回调函数。
    • 模拟实现
var app = document.getElementById('app');
window.onhashchange = function () {
    var hash = location.hash.replace('#', '');
    switch (hash.toLowerCase()) {
        case '/': 
            app.innerHTML = '首页内容';
            break;
        case '/users':
            app.innerHTML = '用户管理内容';
            break;
            ……
    }
};

History路由

  • History 路由是基于 HTML5 规范,在 HTML5 规范中提供了 history.pushState || history.replaceState 来进行路由控制。

vue-router

快速体验

  1. 导入vue和vue-router
  2. 设置HTML中的内容
<!-- router-link 最终会被渲染成a标签,to指定路由的跳转地址 -->
<router-link to="/users">用户管理</router-link>

<!-- 路由匹配到的组件将渲染在这里 -->
<router-view></router-view>

3.创建组件

// 创建组件
// 组件可以放到单独的js文件中
var Home = {
    template: '<div>这是Home内容</div>'
};
var Users = {
    template: '<div>这是用户管理内容</div>'
};

4.配置路由规则

// 配置路由规则
var router = new VueRouter({
    routes: [
        { name: 'home', path: '/', component: Home },
        { name: 'users', path: '/users', component: Users }
    ]
});

5.设置vue的路由选项

var vm = new Vue({
    el: '#app',
    router
});

动态路由匹配

假设有一个用户列表,想要删除某一个用户,需要获取用户的id传入组件内,如何实现呢?

此时可以通过路由传参来实现,具体步骤如下:

  1. 路由规则中增加参数,在path最后增加 :id
{ name: 'users', path: '/users/:id', component: Users },

2.通过 <router-link> 传参,在路径上传入具体的值

<router-link to="/users/120">用户管理</router-link>

3.在组件内部可以使用,this.$route 获取当前路由对象

var Users = {
    template: '<div>这是用户管理内容 {{ $route.params.id }}</div>',
    mounted() {
        console.log(this.$route.params.id);
    }
};

vue-router的具体使用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        .router-link-active {
            color: red;
        }
    </style>
</head>
<body>
    <div id="app">
        <ul>
            <!-- <li><a href="#/login">登录</a></li>
            <li><a href="#/register">注册</a></li> -->
            <li><router-link to="/login">登录</router-link></li>
            <li><router-link to="/register">注册</router-link></li>
            <!-- 设置两个路由的入口: Login / regiester -->

            <!-- 将来路由中的组件中的内容会被动态渲染到这个标签中 -->
            <router-view></router-view>
        </ul>
    </div>
</body>
<script src="./vue.js"></script>
<script src="./vue-router.js"></script>
<!-- 要使用vue-router需要单独引入vue-router -->
<script>
    // 注册路由:
    // 1.0 设置路由对应的组件
    var login = {
        template: "<div>我是登录页面</div>"
    }
    var register = {
        template: "<div>我是注册页面</div>"
    }
    // 2.0 定义一个路由对象:
    var router = new VueRouter({
        routes: [
            // 定义路由
            {name: "login", path: "/login", component: login},
            // 这个路由名称为login,请求的路径为/login,如果将来请求这个路径,
            //  那么会将login对应的组件中的内容响应到页面上,
            //   响应到页面的叫做 <router-view></router-view>的标签
            {name: "register", path: "/register", component: register}
        ]
    });

    // 3.0 要将设置好的路由对象注册到Vue对象
    var vm = new Vue({
        el: "#app",
        data: {
        },
        // router: router
        router
    });
</script>
</html>

更多详情可以参考vue官网对路由的使用:https://router.vuejs.org/zh/

相关文章

  • 简单实现vue-router

    vue-router 将路由引入到前端让构建单页应用变得简单,vue-router作为Vue的路由管理器,使我们在...

  • 05-vue-router

    vue-router 官网 https://router.vuejs.org/zh-cn/ 单页应用 前端路由 根...

  • vue-router 配置路由

    vue-router 配置路由 用 Vue.js + vue-router 创建单页应用,是非常简单的。使用 Vu...

  • Vue-Router学习总结

    什么是路由? vue-router这里的路由就是SPA(单页应用)的路径管理器。通俗的说,vue-router就是...

  • 第三天_路由_Vue.js2.0+Node+ES6+MongoD

    什么是前端路由? 什么时候使用 优点与缺点 vue-router用来构建SPA 单页Web应用(single pa...

  • vue-router2 写法示例

    做单页应用,需要客户端路由。用 Vue.js 做单页应用,一般都用 vue-router 做客户端路由。文档地址点...

  • vue-router 快速入门

    概述 vue-router是vue.js官方的路由插件,vue的单页应用是基于路由和组件的,路由用于设定访问路径,...

  • vue路由

    vue路由--- SPA应用,单页面应用vue-resouce 交互vue-router 路由根据不同url地址...

  • cnode社区

    面试要点:(单页应用重点在vue-router) 单页应用,页面只有一个 APP组件; vue-router实现页...

  • Vue路由模式

    为了构架单页面应用,需要引入前端的路由系统Vue-router。 路由有两种模式:hash、history,默认会...

网友评论

      本文标题:Vue前端路由的单页应用vue-router

      本文链接:https://www.haomeiwen.com/subject/fvyniftx.html