vue 传参 微信_vue-router 你可能忽略的知识点

vue-router相信大家都不陌生,并且很多都有实战经验。可能有很多你忽略的一些点。

1、丑陋的hash值

vue-router 默认 hash 模式 —— 使用 URL 的 hash 来模拟一个完整的 URL,于是当 URL 改变时,页面不会重新加载。

const router = new VueRouter({
mode: 'history', 
routes: [...]
})

当你使用 history 模式时,URL 就像正常的 url,例http://yoursite.com/user/id,也好看!但是这种模式需要后端支持,否则就会返回404,所以最好在服务器端加一个覆盖所有情况的候选资源:匹配不到就返回同一个index.html,即你app的依赖页面。

nginx的配置:

location / {
try_files $uri $uri/ /index.html;
}

但是这里有个问题你所有的访问都只会跳转到index.html页面了,这样就没有达到路由的目的了。别担心,看下面的例子

const NotFound = { template: '<p>Page not found</p>' }
const Home = { template: '<p>home page</p>' }
const About = { template: '<p>about page</p>' }
const routes = {  '/': Home,  '/about': About}
new Vue({ el: '#app',  
data: {  currentRoute: window.location.pathname //获取当前地址},computed: {ViewComponent () {    
return routes[this.currentRoute] || NotFound}},render (h) { return h(this.ViewComponent) }
})

这样就会根据当前地址去找到对应的路由跳转。

2、动态路由匹配

(1)路由参数匹配

假设我们有个页面,只是想要根据不同的参数来显示不同的页面,如:/user/foo 和 /user/bar 都将映射到相同的路由,但是根据参数foo/bar来显示不同的页面。

const User = {
template: '<div>User</div>'
}const router = new VueRouter({
routes: [
// 动态路径参数 以冒号开头{ path: '/user/:id', component: User }]
})

“路径参数”使用冒号 : 标记,当匹配到一个路由时,参数值会被设置到 this.

6f2433b4f6539a346dd37b7fed8f6a86.png

3、同级展示多个视图

有时候想同时 (同级) 展示多个视图,而不是嵌套展示,例如创建一个布局,有 sidebar (侧导航) 和 main (主内容) 两个视图,这时就可以使用命名视图了。如果 router-view 没有设置name名字,那么默认为 default。

<router-view class="view one"></router-view>
<router-view class="view two" name="a"></router-view>
<router-view class="view three" name="b"></router-view>

一个视图使用一个组件渲染,因此对于同个路由,多个视图就需要多个组件。确保正确使用 components 配置 (带上 s):

const router = new VueRouter({
routes: [
{
path: '/',
components: {
default: Foo, //default 默认的router-view名字
a: Bar,
b: Baz
}
}
]
})

4、重定向和别名
“重定向”的意思是,当用户访问 /a时,URL 将会被替换成 /b,然后匹配路由为 /b。 routes 配置来完成,下面例子是从 /a 重定向到 /b:

const router = new VueRouter({
routes: [{ path: '/a', redirect: '/b' }]
})

重定向的目标也可以是一个命名的路由:

const router = new VueRouter({
routes: [{ path: '/a', redirect: { name: 'foo' }}]
})

甚至是一个方法,动态返回重定向目标:

const router = new VueRouter({
routes: [{ path: '/a', redirect: to => {
// 方法接收 目标路由 作为参数
// return 重定向的 字符串路径/路径对象}}]
})

注意导航守卫并没有应用在跳转路由上,而仅仅应用在其目标上。在下面这个例子中,为 /a 路由添加一个 beforeEach 或 beforeLeave 守卫并不会有任何效果。

别名:/a 的别名是 /b,意味着,当用户访问 /b 时,URL 会保持为 /b,但是路由匹配则为 /a,就像用户访问 /a 一样。

const router = new VueRouter({routes: [{ path: '/a', component: A, alias: '/b' }]
})

5、路由组件传参

在组件中使用 route.params可以在组件内使用。因此我们可以根据参数去更新我们的模版。注意:当使用路由参数跳转的时候,原来的组件实例会被复用。(不会销毁再创建,因此组件的生命周期钩子不会再被调用)3、同级展示多个视图有时候想同时(同级)展示多个视图,而不是嵌套展示,例如创建一个布局,有sidebar(侧导航)和main(主内容)两个视图,这时就可以使用命名视图了。如果router−view没有设置name名字,那么默认为default。¨G4G一个视图使用一个组件渲染,因此对于同个路由,多个视图就需要多个组件。确保正确使用components配置(带上s):¨G5G4、重定向和别名“重定向”的意思是,当用户访问/a时,URL将会被替换成/b,然后匹配路由为/b。routes配置来完成,下面例子是从/a重定向到/b:¨G6G重定向的目标也可以是一个命名的路由:¨G7G甚至是一个方法,动态返回重定向目标:¨G8G注意导航守卫并没有应用在跳转路由上,而仅仅应用在其目标上。在下面这个例子中,为/a路由添加一个beforeEach或beforeLeave守卫并不会有任何效果。别名:/a的别名是/b,意味着,当用户访问/b时,URL会保持为/b,但是路由匹配则为/a,就像用户访问/a一样。¨G9G5、路由组件传参在组件中使用route 会使之与其对应路由形成高度耦合,从而使组件只能在某些特定的 URL 上使用,限制了其灵活性。使用 props 将组件和路由解耦。

const User = {props: ['id'],template: '<div>User {{ id }}</div>'
}
const router = new VueRouter({routes: [{ path: '/user/:id', component: User, props: true },// 对于包含命名视图的路由,你必须分别为每个命名视图添加 `props` 选项:{path: '/user/:id',components: { default: User, sidebar: Sidebar },props: { default: true, sidebar: false }}]
})

6、过渡动效

是基本的动态组件,所以我们可以用 组件给它添加一些过渡效果:

<!-- 使用动态的 transition name -->
<transition :name="transitionName">
<router-view></router-view>
</transition>

7、数据获取

有时候,进入某个路由后,需要从服务器获取数据。例如,在渲染用户信息时,你需要从服务器获取用户的数据。我们可以通过两种方式来实现:

导航完成之后获取:先完成导航,然后在接下来的组件生命周期钩子中获取数据。在数据获取期间显示“加载中”之类的指示。created

导航完成之前获取:导航完成前,在路由进入的守卫中获取数据,在数据获取成功后执行导航。beforeRouteEnter

从技术角度讲,两种方式都不错 —— 就看你想要的用户体验是哪种。

8、滚动行为

使用前端路由,当切换到新路由时,想要页面滚到顶部,或者是保持原先的滚动位置,就像重新加载页面那样。 vue-router 能做到,而且更好,它让你可以自定义路由切换时页面如何滚动。

注意: 这个功能只在支持 history.pushState 的浏览器中可用。

当创建一个 Router 实例,你可以提供一个 scrollBehavior 方法:

const router = new VueRouter({
routes: [...],scrollBehavior (to, from, savedPosition) {
// return 期望滚动到哪个的位置}
})

scrollBehavior 方法接收 to 和 from 路由对象。第三个参数 savedPosition 当且仅当 popstate 导航 (通过浏览器的 前进/后退 按钮触发) 时才可用。

// 对于所有路由导航,简单地让页面滚动到顶部。
scrollBehavior (to, from, savedPosition) {
return { x: 0, y: 0 }
}

如果你觉得本文对您有用可扫码关注我的微信公众号,会为您带来更多的精彩内容

14a3270b1293bf8305de3ad21c4d96c9.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/338469.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

适合计算机64位的cad,【1人回答】求一个能适用于CAD2008的纬地,我的电脑是Win7 64位的-3D溜溜网...

回答&#xff1a;下载方法&#xff1a;1、建立临时目录&#xff0c;如 CAD20082、下载AutoCAD2008安装软件&#xff0c;将文件复制到CAD2008目录下。3、将 CAD2008 文件夹中的 zh-cn 文件夹改名为 en-us&#xff1b;4、下载“AutoCAD 2008 64 位补丁包(下载地址&#xff1a;ACA…

C |格式化输出与变量类型

C语言 格式化输出与变量类型 1、格式化输出在PHP里面&#xff0c;我们一般都是用echo和var_dump以及print_r等来输出调试语句&#xff0c;在&#xff23;语言中一般用printf来输出&#xff0c;不过由有点特殊&#xff0c;你需要在输出的时候指定输出的数据类型&#xff1a;#in…

信工干货||C语言输入输出语句

数据输入与输出C语言无I/O语句&#xff0c;I/O操作由函数实现putchar( ) getchar( ) printf( ) scanf( ) puts( ) gets( )#include或#include “stdio.h”数据输出字符输出函数格式&#xff1a;putchar&#xff08;c&#xff09;参数&#xff1a;c为字符型或整型常量、变量或表…

如何设置网件gs108e_Netgear 网件 EAX80 AX6000规格 无线扩展器 开箱拆解评测

前言众所周知&#xff0c;国行网件RAX系列默认中国区&#xff0c;这就导致了路由器的发射功率不会高&#xff0c;所以很多人觉得国行RAX无线路由器信号覆盖不尽如意。为了解决这个问题&#xff0c;本次为大家介绍一款WiFi 6信号扩展器—EAX80(官网链接)&#xff0c;它可以将高强…

饥荒海难创建显示专用服务器,饥荒创建世界时一直显示启动服务器 | 手游网游页游攻略大全...

发布时间&#xff1a;2017-08-07TGP版怎么建立服务器呢?各位知道在TGP里如何创建服务器吗?这里给大家带来了TGP版服务器创建开服方法,教大家TGP如何创建服务器,还不会的玩家,一起来了解下吧. >&gt ...标签&#xff1a;攻略发布时间&#xff1a;2015-12-20联机过程中有…

C语言 | 6种常用的转换工具函数盘点

字符串转十六进制代码实现&#xff1a;void StrToHex(char *pbDest, char *pbSrc, int nLen){ char h1,h2; char s1,s2; int i; for (i0; i2; i) { h1 pbSrc[2*i]; h2 pbSrc[2*i1];s1 toupper(h1) - 0x30; //toupper 转换为大写字母 if (s1 > 9) s1…

企业联合体的形式_联合体如何联合?——总包新政下,联合体如何联合?系列三...

以下文字为根据科思顿企业咨询管理(上海)有限公司合伙人胡建于2020年4月10日的网课核心内容摘录&#xff0c;因内容较多&#xff0c;分三个系列发布&#xff0c;包括&#xff1a;系列之一、为什么政策突变&#xff1f;系列之二、联合体是什么&#xff1f;系列之三、联合体如何联…

vue2 怎么用vite_Vue2和Vue3开发组件有什么区别

我们一直都有关注和阅读很多关于Vue3的新特性和功能即将到来。但是我们没有一个具体的概念在开发中会有如何的改变和不一样的体验。还有一些童鞋已经开始又慌又抓狂了 -- “又要开始学新的写法了 (ノToT )ノ ~┻┻”。所以这里我使用Vue2和Vue3开发一个简单的表格组件来展示一下…

C语言中实现边沿函数算法及应用,这是抛弃PLC留下的痛!

很多从事PLC编程的朋友都知道&#xff0c;不管是什么品牌的PLC&#xff0c;都有上升沿和下降沿指令。❤那么什么情况下我们才会使用或必须使用边沿信号呢&#xff1f;边沿信号我们又如何获取呢&#xff1f;如图1&#xff0c;任何一个开关信号&#xff08;或数字信号&#xff09…

服务器系统装驱动精灵,云服务器安装驱动精灵

云服务器安装驱动精灵 内容精选换一换您可以选择在云服务器上安装一个或多个应用。如需在云服务器上安装其他应用&#xff0c;请参考如下操作进行添加。暂时仅允许支持VR应用的云服务器安装VR应用。暂时仅允许支持3D应用的云服务器安装3D应用。暂时仅允许支持VR应用的云服务器有…

注入器 过检测_连云港管道检测服务

连云港管道检测服务 管道稀释淤泥施工时应采用专业高压水车将两个检查井注入室内灌水&#xff0c;并使用挖泥机将检查井中的污泥与排污管混合&#xff0c;以稀释污泥为目的. 如果是手工作业应与机械作业配合以不断搅拌污泥&#xff0c;直到将其稀释到水中为止.管道吸污。 公司备…

lock.lock_HibernateCascadeType.LOCK陷阱

lock.lock介绍 引入了Hibernate 显式锁定支持以及Cascade Types之后 &#xff0c;就该分析CascadeType.LOCK行为了。 Hibernate锁定请求触发内部LockEvent 。 关联的DefaultLockEventListener可以将锁定请求级联到锁定实体子级。 由于CascadeType.ALL也包括CascadeType.LOCK …

浅谈面向对象思想下的 C 语言

如何使用OO思维方式面向对象(object Oriented&#xff0c;简称&#xff1a;OO)在于用“找对象”的方式去规划和描述问题。一、怎样“找对象” &#xff08;思维过程&#xff09;“对象”是具有共性的一个群体。以 L298N 控制马达的官方推荐方法为例&#xff0c;控制的共性在于&…

我的世界服务器里怎么无限随机传送,我的世界随机传送插件使用教程 权限指令分享...

导读&#xff1a;在我的世界中玩家可以利用随机传送插件来进行传送人物质与设定点&#xff0c;那么随意传送插件该如何使用呢、下面小编我就来教教各位&#xff0c;我的世界随意传送插件使用教程。什么是RandomLocationRandomLocation让你传送到预设区域的随机位置。可以通过命…

热敏电阻温度特性曲线_NTC热敏电阻如何选型

什么是NTCNTC 热敏电阻是负温度系数的电阻&#xff0c;其特性是电阻值随着温度的升高而呈下降趋势。这个与PTC或者PT100等正温度系数的热敏电阻相反。NTC 热敏电阻NTC的阻值-温度对应曲线如下图所示(100K为例&#xff0c;B值3950)。NTC 热敏电阻R-T曲线下面介绍选型原则。2.根据…

如何使用C语言的面向对象?

我们都知道&#xff0c;C 才是面向对象的语言&#xff0c;但是C语言是否能使用面向对象的功能?(1)继承性typedef struct _parent{int data_parent;}Parent;typedef struct _Child{struct _parent parent;int data_child;}Child;在设计C语言继承性的时候&#xff0c;我们需要做…

t3软件怎么生成报表_临沂用友畅捷通T3财务通软件财税一体化

用友T3财税通针对财税一体化的发展趋势&#xff0c;在用友通上海财税专版的基础上&#xff0c;经过完善和提高。同时加入了税务核算功能、所得税汇算功能。 财税通财务软件的财税同步处理&#xff0c;可将事后税务处理的汇总涉税数据工作化整为零&#xff0c;分解到日常凭证填制…

每日干货丨C语言知识总结----循环结构

介绍循环结构可以看成是一个条件判断语句和一个向回 转向语句 的组合。另外&#xff0c;循环结构的三个要素&#xff1a;循环变量、 循环体 和循环终止条件. &#xff0c;循环结构在 程序框图 中是利用判断框来表示&#xff0c;判断框内写上条件&#xff0c;两个出口分别对应着…

apache hadoop_使用Apache Hadoop计算PageRanks

apache hadoop目前&#xff0c;我正在接受Coursera的培训“ 挖掘海量数据集 ”。 我对MapReduce和Apache Hadoop感兴趣已有一段时间了&#xff0c;通过本课程&#xff0c;我希望对何时以及如何MapReduce可以帮助解决一些现实世界中的业务问题有更多的了解&#xff08;我在这里介…

730阵列卡支持多大硬盘_凯捷月销破2万,配6座头等舱空间,到底有多舒服?试驾了才知道...

能够在还未上市的前一个月&#xff0c;就以预售的方式卖出超过2万台&#xff0c;上汽通用五菱在乘用车市场之中的号召力可见一斑。过去我们都将五菱视为商务领域的铭牌&#xff0c;包括宏光、荣光、之光等等家族&#xff0c;都在各自细分市场占据着最顶端位置。如今&#xff0c…