Vue中通过vue-router实现命名视图的问题


Posted in Javascript onApril 23, 2020

在用vue-router路由处理一些需求的时候 例如 有时需要同时同级展示多个组件 而不是嵌套展示
例如:创建一个布局 有侧导航和主内容两个视图 此时命名视图就派上用场了

在路由对象中 使用components属性 以使一个路径下可挂载多个子组件:
之后即可为每个要展示的组件指定一个名字
默认name为default 即 不设置名字

<script>
 var header={
  template:"<h1>头部</h1>"
 }
 var leftBox={
  template:"<h1>左侧边栏</h1>"
 }
 var mainBox={
  template:"<h1>主体</h1>"
 }

 // 创建路由对象
 var router=new VueRouter({
  routes:[
   // 使用components属性 一个路径下挂载多个子组件
   {path:"/",components:{
    // 默认展示的组件
    "default":header,
    // 为组件命名
    "left":leftBox,
    "main":mainBox
   }}
  ]
 })

 var vm=new Vue({
  el:'#app',
  data:{},
  methods:{},
  // 挂载路由对象
  router
 });
</script>

然后 在页面中使用<router-view>标签进行展示 在标签上指定name
若指定了name 那么该<router-view>只能放指定name的组件

<div id="app">
	<!-- 不指定name 则使用默认(default)的组件 -->
	<router-view></router-view>
	<!-- 为<router-view>指定name 该<router-view>只能放指定name的组件 -->
	<router-view name="left"></router-view>
	<router-view name="main"></router-view>
</div>

ps:下面介绍下vue-router的原理

更新视图但不重新请求页面,是前端路由原理的核心之一,目前在浏览器环境中这一功能的实现主要有2种方式,Hash模式和History模式:

(1)利用URL中的hash("#");

(2)利用History interface在HTML5中新增的方法;

1、Hash模式: 

      hash(#)是URL 的锚点,代表的是网页中的一个位置,单单改变#后的部分,浏览器只会滚动到相应位置,不会重新加载网页,也就是说 #是用来指导浏览器动作的,对服务器端完全无用,HTTP请求中也不会不包括#;同时每一次改变#后的部分,都会在浏览器的访问历史中增加一个记录,使用”后退”按钮,就可以回到上一个位置;

2、History模式: 

    HTML5 History API提供了一种功能,能让开发人员在不刷新整个页面的情况下修改站点的URL,就是利用 history.pushState API 来完成 URL 跳转而无须重新加载页面;

通常情况下,我们会选择使用History模式,原因就是Hash模式下URL带着‘#'会显得不美观;但实际上,这样选择一不小心也会出问题;比如:

但当用户直接在用户栏输入地址并带有参数时: 
Hash模式:xxx.com/#/id=5 请求地址为 xxx.com,没有问题; 
History模式: xxx.com/id=5 请求地址为 xxx.com/id=5,如果后端没有对应的路由处理,就会返回404错误; 

为解决这一问题,vue-router提供的方法是:

在服务端增加一个覆盖所有情况的候选资源:如果 URL 匹配不到任何静态资源,则应该返回同一个 index.html 页面,这个页面就是你 app 依赖的页面。 

给个警告,因为这么做以后,你的服务器就不再返回 404 错误页面,因为对于所有路径都会返回 index.html 文件。为了避免这种情况,你应该在 Vue 应用里面覆盖所有的路由情况,然后在给出一个 404 页面。或者,如果你使用 Node.js 服务器,你可以用服务端路由匹配到来的 URL,并在没有匹配到路由的时候返回 404,以实现回退。

到此这篇关于Vue中通过vue-router实现命名视图的问题的文章就介绍到这了,更多相关vue vue-router命名视图内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
Javascript 模式实例 观察者模式
Oct 24 Javascript
JS维吉尼亚密码算法实现代码
Nov 09 Javascript
jQuery 选择表格(table)里的行和列及改变简单样式
Dec 15 Javascript
jQuery判断元素上是否绑定了指定事件的方法
Mar 17 Javascript
基于node.js依赖express解析post请求四种数据格式
Feb 13 Javascript
使用Browserify来实现CommonJS的浏览器加载方法
May 14 Javascript
微信小程序 新建登录页并实现tabBar隐藏
Jun 13 Javascript
vue 全选与反选的实现方法(无Bug 新手看过来)
Feb 09 Javascript
js实现图片上传即时显示效果
Sep 30 Javascript
在JavaScript中实现链式调用的实现
Dec 24 Javascript
Element DateTimePicker日期时间选择器的使用示例
Jul 27 Javascript
vue form表单post请求结合Servlet实现文件上传功能
Jan 22 Vue.js
利用原生JS实现欢乐水果机小游戏
Apr 23 #Javascript
JS eval代码快速解密实例解析
Apr 23 #Javascript
浅谈vue权限管理实现及流程
Apr 23 #Javascript
js实现简单的贪吃蛇游戏
Apr 23 #Javascript
Vue Cli3 打包配置并自动忽略console.log语句的方法
Apr 23 #Javascript
vue项目打包之开发环境和部署环境的实现
Apr 23 #Javascript
javascript设计模式 ? 模板方法模式原理与用法实例分析
Apr 23 #Javascript
You might like
用php来改写404错误页让你的页面更友好
2013/01/24 PHP
ThinkPHP实现事务回滚示例代码
2014/06/23 PHP
php使用unset()删除数组中某个单元(键)的方法
2015/02/17 PHP
PHP性能分析工具XHProf安装使用教程
2015/05/13 PHP
php实现编辑和保存文件的方法
2015/07/20 PHP
PHP中in_array函数使用的问题与解决办法
2016/09/11 PHP
PHP 实现手机端APP支付宝支付功能
2018/06/07 PHP
TP5.0框架实现无限极回复功能的方法分析
2019/05/04 PHP
关于JavaScript的面向对象和继承有利新手学习
2013/01/11 Javascript
js改变img标签的src属性在IE下没反应的解决方法
2013/07/23 Javascript
jquery Tab效果和动态加载的简单实例
2013/12/11 Javascript
JS 数字转换研究总结
2013/12/26 Javascript
使用js实现一个可编辑的select下拉列表
2014/02/20 Javascript
Node.js(安装,启动,测试)
2014/06/09 Javascript
javascript实现下班倒计时效果的方法(可桌面通知)
2015/07/10 Javascript
NodeJS整合银联网关支付(DEMO)
2016/11/09 NodeJs
简单实现js菜单栏切换效果
2017/03/04 Javascript
写gulp遇到的ES6问题详解
2018/12/03 Javascript
JavaScript面向对象核心知识与概念归纳整理
2020/05/09 Javascript
[02:33]2014DOTA2 TI每日综述 LGD涉险晋级DK闯入胜者组
2014/07/14 DOTA
python计算圆周率pi的方法
2015/07/11 Python
Sanic框架蓝图用法实例分析
2018/07/17 Python
TensorFlow卷积神经网络之使用训练好的模型识别猫狗图片
2019/03/14 Python
tensorflow 模型权重导出实例
2020/01/24 Python
无需压缩软件,用python帮你操作压缩包
2020/08/17 Python
最新PyCharm 2020.2.3永久激活码(亲测有效)
2020/11/26 Python
html5的canvas实现3d雪花飘舞效果
2013/12/27 HTML / CSS
领先的钻石和订婚戒指零售商:Diamonds-USA
2016/12/11 全球购物
Sephora丝芙兰泰国官方网站:国际知名化妆品购物
2017/11/15 全球购物
加拿大领先的优质厨具产品在线购物网站:Golda’s Kitchen
2017/11/17 全球购物
计算机专业毕业生推荐信
2013/11/25 职场文书
如何撰写岗位职责
2014/02/01 职场文书
洗车工岗位职责
2014/03/15 职场文书
大学生求职信例文
2014/06/29 职场文书
国际经济与贸易专业求职信
2014/07/10 职场文书
归元寺导游词
2015/02/06 职场文书