vue单页面应用的原理

vue单页面应用的原理通常的url地址由什么构成呢:协议名域名端口号路径参数哈希值比如:http://www.itcast.cn:80/home/index?name=zs#absdklfajdf当哈希值改变(哈希值就是:#absdklfajdf),页面不会发生跳转,单页面应用就是利用了这一点:单页面应用因为只有一个页面,所以页面不能发生跳转,但是,我们又需要根据url地址来展示不同的组件…

大家好,又见面了,我是你们的朋友全栈君。

通常的url 地址由什么构成呢:协议名 域名 端口号 路径 参数 哈希值

比如:http://www.itcast.cn:80/home/index?name=zs#absdklfajdf

当哈希值改变(哈希值就是:#absdklfajdf),页面不会发生跳转,单页面应用就是利用了这一点:

单页面应用因为只有一个页面,所以页面不能发生跳转,但是,我们又需要根据url地址来展示不同的组件

这个时候,只能用哈希值来表示究竟要展示哪个组件了

单页面应用就是根据hash值来改的

 给window注册onhashchange事件,当哈希值改变时通过location.hash就能获得相应的哈希值,然后就能跳到相应的页面:

<body>
    <div id="app">
      <component :is="currentPage"></component>
    </div>
    <script src="./node_modules/vue/dist/vue.js"></script>
    <script>

      // 设计用户访问的规则
      // #/login  访问登录页  要给用户展示login组件
      // #/register 访问注册页  要给用户展示register组件
      // #/list 列表页 要给用户展示list组件

      Vue.component("login", {
        template: `<div>
          <h1>这是登录页</h1>
          <input type="text"><input type="text"><button>登录</button>
        </div>`
      });

      Vue.component("register", {
        template: `<div>
          <h1>这是注册页</h1>
          <input type="text"><input type="text"><input type="text"><button>注册</button>
        </div>`
      });

      Vue.component("list", {
        template: `<div>
          <h1>这是列表页</h1>
          <input type="text"><input type="text"><button>登录</button>
        </div>`
      });

      const vm = new Vue({
        el: "#app",
        data: {
          currentPage: "login"
        },
        created() {
          window.onhashchange = () => {
            this.goPage()
          };
        },
        methods: {
          goPage() {
            switch (location.hash) {
              case "#/login":
                this.currentPage = "login";
                break;
              case "#/register":
                this.currentPage = "register";
                break;
              case "#/list":
                this.currentPage = "list";
                break;
            }
          }
        }
      });
    </script>
  </body>

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/148496.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 如何创建oracle数据表空间,oracle创建数据库/表空间

    如何创建oracle数据表空间,oracle创建数据库/表空间||||||||||||||||||||||||简略的说||||||||||||||||||||||||||||以管理员身份登录:1.首先,创建(新)用户:createuserusernameidentifiedbypassword;username:新用户名的用户名password:新用户的密码也可以不创建新用户,而仍然用以前的用户,如:继续利用scott用户2.创建表空间:create…

  • pytest指定用例_文件夹排列顺序自定义

    pytest指定用例_文件夹排列顺序自定义前言测试用例在设计的时候,我们一般要求不要有先后顺序,用例是可以打乱了执行的,这样才能达到测试的效果.有些同学在写用例的时候,用例写了先后顺序,有先后顺序后,后面还会有新的问题(如:上个用例返回

  • Exception和Error的理解

    Exception和Error的理解

  • Windows 8或不再支持1394接口「建议收藏」

    Windows 8或不再支持1394接口「建议收藏」根据上月底泄露的Windows8开发规划,微软新操作系统将提供对USB3.0、蓝牙3.0+HS等新外设接口的支持,而“古老”的IEEE1394接口却没有丝毫提及。有媒体因此猜测,Windows8很可能将放弃对IEEE1394的支持。  IEEE1394接口标准于1995年颁布,由苹果主持推动,但其中的大部分技术标准来自德州仪器、索尼、DEC、IBM、意法半导体等企…

    2022年10月26日
  • SpringBatch概述

    SpringBatch概述1、SpringBatch简介1.1、简介根据Spring官网描述,SpringBatch是一个轻量级的、完善的批处理应用框架,旨在支持企业系统建立健壮、高效的批处理应用。然而SpringBatch不是一个调度框架,它只关注于任务的处理,如日志监控、事务、并发问题等,但是它可以与其它调度框架一起联合使用,完成相应的调度任务,如Quartz、Tivoli、Control-M等。Sprin…

  • Route add 命令举例「建议收藏」

    Route add 命令举例「建议收藏」例子1:要显示IP路由表的完整内容,执行以下命令:  route print  例子2:要显示IP路由表中以10.开始的路由,执行以下命令:  route print 10.*  例子3:要添加默认网关地址为192.168.12.1的默认路由,执行以下命令:  route add 0.0.0.0 mask 0.0.0.0 192.168.12.1  例子4:要添加目标为10.41.0.

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号