vue路由有哪两种模式

vue路由的两种模式:1、hash模式,其原理是onhashchange事件,可以在window对象上监听这个事件;2、history模式,可利用“history.pushState”的API来完成URL跳转。

vue路由有哪两种模式

本教程操作环境:windows7系统、vue2.9.6版,DELL G3电脑。

前后端分离 ===> 利用Ajax,可以在不刷新浏览器的情况下异步数据请求交互。

单页应用(只有一个html文件,整个网站的所有内容都在这一个html里,通过js来处理不仅仅是在页面交互是无刷新的,连页面跳转都是无刷新的。为了实现单页应用 ==> 前后端分离 + 前端路由。(更新视图但不重新请求页面)

前端路由实现起来其实也很简单,就是匹配不同的 url 路径,进行解析,加载不同的组件,然后动态的渲染出区域 html 内容。

立即学习“前端免费学习笔记(深入)”;

hash模式

#后面 hash 值的变化,并不会导致浏览器向服务器发出请求,浏览器不发出请求,也就不会刷新页面。每次 hash 值的变化,会触发hashchange 这个事件,通过这个事件我们就可以知道 hash 值发生了哪些变化。然后我们便可以监听hashchange来实现更新页面部分内容的操作

hash模式背后的原理是onhashchange事件,可以在window对象上监听这个事件:

window.onhashchange = function(event){     console.log(event.oldURL, event.newURL);    let hash = location.hash.slice(1);    document.body.style.color = hash; }

登录后复制

 上面的代码可以通过改变hash来改变页面字体颜色。

vue路由有哪两种模式

当你选择mode类型之后,程序会根据你选择的mode 类型创建不同的history对象(hash:HashHistory 或 history:HTML5History 或 abstract:AbstractHistory)

switch (mode) {  case 'history':    this.history = new HTML5History(this, options.base)    break  case 'hash':    this.history = new HashHistory(this, options.base, this.fallback)    break  case 'abstract':    this.history = new AbstractHistory(this, options.base)    break  default:    if (process.env.NODE_ENV !== 'production') {      assert(false, `invalid mode: ${mode}`)    }}

登录后复制

HashHistory有两个方法:HashHistory.push()将新路由添加到浏览器访问历史的栈顶 和 HashHistory.replace()替换掉当前栈顶的路由

vue路由有哪两种模式

vue路由有哪两种模式

 

因为hash发生变化的url都会被浏览器记录(历史访问栈)下来,从而你会发现浏览器的前进后退都可以用了。这样一来,尽管浏览器没有请求服务器,但是页面状态和url一一关联起来。

history模式

因为HTML5标准发布,多了两个 API,pushState() 和 replaceState()。通过这两个 API (1)可以改变 url 地址且不会发送请求,(2)不仅可以读取历史记录栈,还可以对浏览器历史记录栈进行修改。

除此之外,还有popState().当浏览器跳转到新的状态时,将触发popState事件.

修改历史状态

包括了pushState,replaceState两个方法,这两个方法接收三个参数:stateObj,title,url

window.history.pushState(stateObject, title, URL)window.history.replaceState(stateObject, title, URL)

登录后复制

切换历史状态

包括back,forward,go三个方法,对应浏览器的前进forward,后退back,跳转go操作。   有同学说了,(谷歌)浏览器只有前进和后退,没有跳转,嗯,在前进后退上长按鼠标,会出来所有当前窗口的历史记录,从而可以跳转(也许叫跳更合适):

history.go(-2);//后退两次

history.go(2);//前进两次

history.back(); //后退

hsitory.forward(); //前进

区别:

前面的hashchange,你只能改变#后面的url片段。而pushState设置的新URL可以是与当前URL同源的任意URL。history模式则会将URL修改得就和正常请求后端的URL一样,如后端没有配置对应/user/id的路由处理,则会返回404错误

当用户刷新页面之类的操作时,浏览器会给服务器发送请求,所以这个实现需要服务器的支持,需要把所有路由都重定向到根页面。

history模式怕啥
不怕前进,不怕后退,就怕刷新,(如果后端没有准备的话),因为刷新是实实在在地去请求服务器的。

在history模式下,你可以自由的修改path。history模式最终的路由都体现在url的pathname中,这部分是会传到服务器端的,因此需要服务端对每一个可能的path值都作相应的映射。

当刷新时,如果服务器中没有相应的响应或者资源,会分分钟刷出一个404来。

router挂在到根组件

new Vue({  router})

登录后复制

此时的router会被挂载到 Vue 的根组件this.$options选项中。在 option 上面存在 router 则代表是根组件。

$router与$route的区别

 1. $route从当前router跳转对象里面可以获取name、path、query、params等(传的参数由 this.$route.query或者 this.$route.params 接收)

2. $router为VueRouter实例。想要导航到不同URL,则使用$router.push方法;返回上一个history也是使用$router.go方法

【相关推荐:vue.js教程】

以上就是vue路由有哪两种模式的详细内容,更多请关注【创想鸟】其它相关文章!

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

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2940504.html

(0)
上一篇 2025年3月11日 21:45:03
下一篇 2025年2月23日 08:48:56

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • vue构建需要哪些目录

    vue构建需要的目录:1、build(构建脚本目录);2、config(项目配置目录);3、node_modules(项目依赖模块目录);4、src;5、static(静态资源目录);6、components(组件目录)等等。 本教程操作环…

    2025年3月11日 编程技术
    200
  • vue的核心是什么

    vue有两大核心:1、数据驱动,也就是数据的双向绑定,让视图(DOM)的内容随着数据的改变而改变;2、组件化系统,可实现扩展HTML元素,封装可用的代码。 本教程操作环境:windows7系统、vue2.9.6版,DELL G3电脑。 vu…

    2025年3月11日
    200
  • vue中的ajax一般放在哪个生命周期中

    vue中的ajax请求一般放在“created”周期中,好处:1、能更快获取到服务端数据,减少页面loading时间;2、有助于一致性,因为ssr不支持beforeMount、mounted钩子函数。 本教程操作环境:windows7系统、…

    2025年3月11日
    200
  • 一起聊聊Hooks对Vue而言意味着什么

    本篇文章给大家带来了关于hooks与vue的相关知识,hooks是react在v16.7.0-alpha版本中引入的,hooks主要是对模式的复用提供了一种更明确的思路,希望对大家有帮助。 不要把 Hooks 和 Vue 的生命周期钩子(L…

    2025年3月11日
    200
  • vue和laravel有什么区别

    vue和laravel的区别:1、vue是一款基于JavaScript语言的开源Web应用框架,而laravel是一款基于PHP语言的Web开源框架;2、vue的体积小、学习成本低,而laravel的体积大、学习成本高。 本教程操作环境:w…

    2025年3月11日
    200
  • vue-router两种模式有什么区别

    区别:1、history的url没有“#”号,而hash有;3、history修改的url可以是同域的任意url,而hash是同文档的url;3、相同的url,history会触发添加到浏览器历史记录栈中,而hash不会触发。 本教程操作环…

    2025年3月11日
    200
  • vue的优势是什么

    vue的优势是:1、可以进行组件化开发,使代码编写量大大减少;2、可以对数据进行双向绑定;3、使用Vue.js编写出来的界面效果本身就是响应式的,这使网页在各种设备上都能显示出非常好看的效果;4、使用路由不会刷新页面。 本教程操作环境:wi…

    2025年3月11日
    200
  • vscode用哪些vue插件

    vue开发插件有:1、“Vetur”,用于语法高亮、智能感知等;2、“EsLint”,用于语法纠错;3、“Path Intellisense”,用于自动路径补全;4、“HTML CSS Support”;5、“Beautify”等。 本教程…

    2025年3月11日
    200
  • vue基本类型都有哪些

    vue的基本类型有:1、字符串(Sring)类型,是一段以单引号或双引号包裹起来的文本;2、布尔值(Boolean)类型,只有true和false两个值;3、数字(Number)类型,用来定义数值,不区分整数和小数。 本教程操作环境:win…

    2025年3月11日
    200
  • vue有什么常用api

    vue的api有:1、nextTick;2、mixin;3、“$forceUpdate”;4、set和delete;5、filter;6、directive;7、“$root”;8、“$el”;9、“$data”;10、“$props”等。…

    2025年3月11日
    200

发表回复

登录后才能评论