明确课堂目标:

1. SPA是什么?

单页Web应用(single page application,SPA),就是只有一个Web页面的应用,
  是加载单个HTML页面,并在用户与应用程序交互时动态更新该页面的Web应用程序

2.SPA和普通模式的区别及其优势:

单页面应用程序:
     只有第一次会加载页面, 以后的每次请求, 仅仅是获取必要的数据.然后, 由页面中js解析获取的数      据, 展示在页面中
 传统多页面应用程序:
     对于传统的多页面应用程序来说, 每次请求服务器返回的都是一个完整的页面
  优势
     减少了请求体积,加快页面响应速度,降低了对服务器的压力(以前的开发是jsp,现在是html--静态页面不用访问服务器)
     更好的用户体验,让用户在web app感受native app的流畅

传统开发:url跳jsp页面

SPA项目:url跳组件

3. SPA实现思路和技术点

技术点:

1.ajax
   2 锚点的使用(window.location.hash #)
   3 hashchange 事件 window.addEventListener("hashchange",function () {})
   4 监听锚点值变化的事件,根据不同的锚点值,请求相应的数据
   5 原本用作页面内部进行跳转,定位并展示相应的内容

路由思路
1、确保引入Vue.vue-router的js依赖
2、首先需要定义组件(就是展示不同的页面效果)
3、需要将不同的组件放入一个容器中(路由集合)
4、将路由集合组装成路由器
5、将路由挂载到Vue实例中
6、定义锚点
7、跳转

4. 通过vue的路由可实现多视图的单页Web应用(基于html的SPA)

3.0 引入依赖库

<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>    
        <script src="https://cdn.bootcdn.net/ajax/libs/vue-router/3.1.2/vue-router.js"></script>

3.1 创 建自定义组件,例如:Home和Abort组件
      const Home = Vue.extend({});

注1:extend是构造一个组件的语法器. 你给它参数,他给你一个组件,然后这个组件
           你可以作用到Vue.component这个全局注册方法里,也可以在任意vue模板里使用car组件

      注2:也可以用以前的方式创建和获得组件,效果也是一样的
           Vue.component("button-counter", {...});//创建组件
       var ButtonCounter = Vue.component('button-counter');//获得组件

3.2 定义路由(即路线), 
      var routes = [{path: '/about',component: About}];

  注1:根路径“/”

  3.3 创建路由器实例,然后传 `routes` 配置
      const router = new VueRouter({routes:routes});

注1:route和router的区别
           route:路线
           router:路由器
           路由器中包含了多个路线

  3.4 创建和挂载根实例。

var vm = new Vue({router: router}).$mount('#app');

3.4 前面使用RouterLink和RouterView组件导航和显示

<!-- 使用RouterLink组件导航. -->
      <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
      <!-- 通过传入 `to` 属性指定链接. -->
      <router-link to="/home">go to Home</router-link>
      <!-- 使用RouterView组件显示. -->
      <router-view></router-view>

4. router-link相关属性

  4.1 to
      表示目标路由的链接
      <router-link to="/home">Home</router-link><!-- 字符串 -->
      <router-link v-bind:to="'home'">Home</router-link><!-- 使用 v-bind 的 JS 表达式 -->

  4.2 replace(无痕浏览)
      设置 replace 属性的话,当点击时,会调用 router.replace() 而不是 router.push(),导航后不会留下 history 记录。
      <router-link :to="{ path: '/home'}" replace></router-link>

vue中导航中的后退-前进-编程式导航
      this.$router.go(-1) :代表着后退
      this.$router.go(1):代表着前进
      this.$router.push({    切换到name为home的路由
       name:'home'
      });
   
  4.3 append
      设置 append 属性后,则在当前 (相对) 路径前添加基路径。例如,我们从 /a 导航到一个相对路径 b,如果没有配置 append,则路径为 /b,如果配了,则为 /a/b
    
      <router-link :to="{ path: 'relative/path'}" append></router-link>

  4.4 有时候想要 <router-link> 渲染成某种标签,例如 <li>。 于是我们使用 tag prop 类指定何种标签,同样它还是会监听点击,触发导航
      <router-link to="/foo" tag="li">foo</router-link>
      <!-- 渲染结果 -->
      <li>foo</li>

  4.5 active-class
      设置 链接激活时使用的 CSS 类名。可以通过以下代码来替代

  4.6 exact-active-class
      配置当链接被精确匹配的时候应该激活的 class。可以通过以下代码来替代。
     
  4.7 event
      声明可以用来触发导航的事件。可以是一个字符串或是一个包含字符串的数组。

<router-link v-bind:to = "{ path: '/route1'}" event = "mouseover">Router Link 1</router-link>       案列:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>路由</title>
        <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.0/vue.js"></script>
        <script src="https://cdn.bootcdn.net/ajax/libs/vue-router/2.6.0/vue-router.js"></script>
    </head>
    <body>
        <div id="app">
            <!-- 链接到锚点 -->
            <router-link to="/Home" replace>首页</router-link>
            <router-link to="/Abort">关于</router-link>
            <!-- 定义锚点 -->
            <router-view></router-view>
        </div>
        <script type="text/javascript">
            // 定义组件
            const Home = Vue.extend({
                template: "<div><p>这是首页</p><div>首页内容</div></div>"
            })
            const Abort = Vue.extend({
                template: "<div><p>这是本站介绍</p><div>本站意义,发展史,未来展望</div></div>"
            })
            // 定义链路集合,添加url与组件的映射关系(组合路由)
            let routes = [{
                path: '/',
                component: Home
            },{
                path: '/Home',
                component: Home
            },{
                path: '/Abort',
                component: Abort
            }];
            // 定义路由,将路由集合组合成路由器
            const router = new VueRouter({routes:routes})

     // 挂载vue
            new Vue({
                el: app,
                router,
                data() {
                    return {
                        msg: "hello Wrold!!!"
                    }
                }
            })
        </script>
    </body>
</html>

Vue之路由--SPA模式相关推荐

  1. vue react 路由history模式刷新404问题解决方案

    vue react 路由history模式刷新404问题解决方案 参考文章: (1)vue react 路由history模式刷新404问题解决方案 (2)https://www.cnblogs.co ...

  2. Vue学习杂记(八)——SPA模式和前端路由

    SPA模式和前端路由 一.SPA模式介绍 二.前端路由工作原理 三.配置前端路由 三.路由的其他使用方式 四.动态路由与参数说明 五.导航卫士 一.SPA模式介绍     SPA(single pag ...

  3. vue 打包路由报错_Vue下路由History模式打包后页面空白的解决方法

    vue的路由在默认的hash模式下,默认打包一般不会有什么问题,不过hash模式由于url会带有一个#,不美观,而且在微信分享,授权登录等都会有一些坑.所以history模式也会有一些应用场景.新手往 ...

  4. vue 单页面(SPA) history模式调用微信jssdk 跳转后偶尔 “invalid signature“错误解决方案

    vue 单页面(SPA) history模式调用微信jssdk 跳转后偶尔 "invalid signature"错误解决方案 参考文章: (1)vue 单页面(SPA) hist ...

  5. 单页面应用(SPA)前端路由hash 模式 VS history 模式

    文章目录 单页面应用(SPA) 前端路由的由来 前端路由 hash 模式 history 模式 hash.history优缺点 单页面应用(SPA) 简单的说 SPA 就是一个WEB项目只有一个 HT ...

  6. java游戏spa,【Vue的路由,SPA概念】

    前言 本章是为了以后实现前端页面的搭建而写的, 重点在于如何实现 单页Web应用 因为相对于以前的传统多页面web,有很大的缺陷. 那么就必须了解一下Vue的路由设置. SPA的概念 总的而言,我们知 ...

  7. 解决vue路由hash模式下,微信网页授权问题

    解决vue路由hash模式下,微信网页授权问题 本人开发负责微信公众号端,菜单都是自定义菜单,然后每个菜单路径都是经过授权如:http://xxxx.com/ceshi/wechat/authoriz ...

  8. vue路由的模式 以及原理 区别

    ⾯试官您好,接下来我给您介绍⼀下 vue 的路由模式,vue 的路由模式⼀共有两种,分别是哈希和 history.他们的区别是 hash 模式不会包含在 http 请求当中,并且 hash 不会重新加 ...

  9. vue路由history模式刷新页面时页面丢失时常见的两种解决方法

    方法一: 1 2 3 4 5 6 7 8 location /{     root   /data/nginx/html;     index  index.html index.htm;     i ...

最新文章

  1. “平头哥”半导体公司
  2. 21/100. Two Sum
  3. 组态王调用mysql存储过程_组态王与数据库通讯
  4. 力扣有没有java_【Java】一篇文章带你玩转用Java刷力扣
  5. 从零开始学架构3 - 高可用篇
  6. 一个非常标准的Java连接Oracle数据库的示例代码
  7. 超过130个你需要了解的vim命令
  8. matlab进化树的下载,MEGA进化树下载
  9. 《东周列国志》第五回 宠虢公周郑交质 助卫逆鲁宋兴兵
  10. css鼠标经过盒子,盒子向上移动动画
  11. JAVA面向对象学习——java面向对象概念———接口
  12. 第九届全国大学生GIS应用技能大赛下午(试题及参考答案)
  13. 近14年美股各个板块收益之间的差异
  14. UVC Extension Unit 相关资料整理
  15. Excel怎样设置标题行,Excel工作表中标题行的处理
  16. 木偶然-2010.7.17
  17. 基于LabVIEW的图片上数字识别(特征点)
  18. hbilderx 扫一扫_【报Bug】hbuilder 扫一扫从相册中选图的图片扫码识别不出来
  19. 以前的java单机游戏过关长剑,玩过这些经典单机游戏_就说明你已经老了
  20. open62541 (R 1.1.2)中文文档 (译文)第一篇 (1 - 5)

热门文章

  1. 华为的网络模拟器eNSP
  2. 沉睡者IT - 短视频简单无脑玩法,播放量10w+的藏头诗玩法,操作思路分享给你!
  3. 谈谈在创业公司的几点感触
  4. 为什么很多电销公司喜欢用大数据获得资源?
  5. 【考研经验】19年华东师范大学计算机专硕考研经验(初试+复试)分享!专业课140分!...
  6. 班章管家:理财产品哪个好一些?从以下几个方面比较
  7. vue使用Echarts画柱状图
  8. LaTex 表示 波浪线
  9. 【华人学者风采】胡瑞忠 中国科学院
  10. Hadoop配置—完全分布式