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>

 

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 离散数学在计算机科学中的应用论文(集合论在计算机的应用)

    自从我们学院进行软件工程认证后,期末考试的专业课全部是大题。这次离散数学的最后一题是:利用本学期学到的离散数学的知识阐释其在一个软件工程中的应用。下面说说离散数学的应用。离散数学在数据结构中的应用数据结构中将操作对象间的关系分为四类:集合、线性结构、树形结构、图状结构或网状结构。数据结构研究的主要内容是数据的逻辑结构,物理存储结构以及基本运算操作。其中逻辑结构和基本运算操作来源于离散

    2022年4月17日
    120
  • 手把手教你如何玩转Activiti工作流「建议收藏」

    手把手教你如何玩转Activiti工作流「建议收藏」一:Activiti的介绍场景:学校主角:阿毛,班主任,教务处处长问题:有一天,阿毛到学校,感觉到身体不舒服,然后想跟班主任请假,然后班主任告诉阿毛说,你想请假,那么就必须要请假条,这个上面必须要我同意,然后再拿到教务处去盖章,然后交给我,这样才可以进行请假。。阿毛,想着,怎么请个假都这么麻烦,这么多层次处理问题,能不能简便一点。。。。好烦好烦~!!~~分析…

    2022年5月13日
    48
  • Intellij IDEA快捷键生成Getter、Setter和构造器[通俗易懂]

    Intellij IDEA快捷键生成Getter、Setter和构造器[通俗易懂]隔一个暑假不用,再次使用Idea快捷键都忘的差不多了。特此记录下快捷键生成Getter/Setter等。Alt + Insert 组合,可唤出选择面板:选择自己需要的即可。…

    2022年6月13日
    139
  • Windows下如何强制删除文件夹及文件的命令「建议收藏」

    Windows下如何强制删除文件夹及文件的命令「建议收藏」点击Win输入cmd以管理员身份打开输入命令:rd/s/q盘符:\某个文件夹(强制删除文件文件夹和文件夹内所有文件)例如rd/s/qF:\AdobePhotoshop\AdobePhotoshopCS6del/f/s/q盘符:\文件名(强制删除文件,文件名必须加文件后缀名)例如del/f/s/qF:\护眼精灵\huyanjingling.rarhttps://blog.csdn.net/hanhanwanghaha欢迎关注这个超级无敌可爱的人鸭,有什么问

    2022年6月10日
    360
  • eclipse配置SVN_eclipse导入svn项目

    eclipse配置SVN_eclipse导入svn项目当我们使用EclipseSVN插件进行团队合作开发时,有些时候我们可能想要将某个文件的本地版本与服务器上的最新版本(或历史版本)进行对比,以便于查找出改动的不同之处。1、与SVN服务器上的最新版本进行对比。右键单击指定的项目,在弹出的关联菜单中点击【Team】->【SynchronizewithRepository】,此时Eclipse将进入同步视图。在团队同步视图中,点击左侧任意文件,

    2022年10月14日
    6
  • pycharm激活码2021年3月【在线破解激活】[通俗易懂]

    pycharm激活码2021年3月【在线破解激活】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月16日
    54

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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