关于vue的一些对比
1.计算属性与方法pk
1.计算属性有缓存,方法没有。默认计算属性的函数只会进入一次,页面就算使用多次,也是拿上一次的结果,只有当他的依赖项发生变化时,才会重新计算
2、如果需要传递参数的话,那这个时候可以选择方法。
1.v-if 和 v-show 区别
相同点:都能实现元素的显示和隐藏
不同点:
1.v-if是真正的条件渲染,而v-show只是控制元素的dispaly属性,当需要做频繁切换显示隐藏时,推荐使用v-show,如果只是做一次,使用v-if;
2.v-if能使用template,而v-show不能使用
3.v-if有配套的v-else和v-else-if使用,而v-show没有
2.router的区别
router是“路由实例”对象包括了路由的跳转方法,钩子函数等
3.vue路由hash模式与history模式的区别
hash模式路由的哈希模式其实是利用了window可以监听onhashchange事件,也就是说你的url中的哈希值(#后面的值)如果有变化,前端是可以做到监听并做一些响应(搞点事情),这么一来,即使前端并没有发起http请求他也能够找到对应页面的代码块进行按需加载。后来人们给他起了一个霸气的名字叫前端路由,成为了单页应用标配
history模式我们先介绍一下H5新推出的两个神器:pushState与replaceState具体自行百度,简而言之,这两个神器的作用就是可以将url替换并且不刷新页面,好比挂羊头卖狗肉,http并没有去请求服务器该路径下的资源,一旦刷新就会暴露这个实际不存在的“羊头”,显示404
那么如何去解决history模式下刷新报404的弊端呢,这就需要服务器端做点手脚,将不存在的路径请求重定向到入口文件(index.html),前后端联手,齐心协力做好“挂羊头卖狗肉”的完美特效
总之,pushState方法不会触发页面刷新,只是导致history对象发生变化,地址栏会有反应
history模式下,build之后本地 index.html 打开是无效的。
hash模式下,build之后本地 index.html 打开正常!
大牛回答:hash模式url里面永远带着#号,我们在开发当中默认使用这个模式。那么什么时候要用history模式呢?如果用户考虑url的规范那么就需要使用history模式,因为history模式没有#号,是个正常的url适合推广宣传。当然其功能也有区别,比如我们在开发app的时候有分享页面,那么这个分享出去的页面就是用vue或是react做的,咱们把这个页面分享到第三方的app里,有的app里面url是不允许带有#号的,所以要将#号去除那么就要使用history模式,但是使用history模式还有一个问题就是,在访问二级页面的时候,做刷新操作,会出现404错误,那么就需要和后端人员配合让他配置一下apache或是nginx的url重定向,重定向到你的首页路由上就ok啦。