学习记录:关于对vue的mvvm模式的理解 附:最近的面试情况

267 阅读3分钟
经常学了后面的,忘了前面的,网上说写写博客,可以改善这个情况。所以来记录一下学习

重新学习vue1 关于vue的mvvm的模式,mvvm模式降低了前后端的耦合性,将前后端分离了。以前的前端由于标签结构和数据的联系,在修改后端或前端的数据时,可能会造成前端和后端不必要的影响。 mvvm模式将标签结构放在了模板语法中,将后端数据(或前端的模拟数据)和逻辑方法放在vue的实例对象中,data存放数据,methods存放逻辑方法 ,而后端的数据则可以在data中进行传递。 这里模板语法对应了v层(视图层),data数据对应了m层(数据层),而vm层则是m层和v层的中间件,由于在vue中是不允许v层和m层直接通信的。这时候vm层就起到联系v层和m层的作用,当v层发生变化时,vm层就会使m层产生对应的变化;反之亦然。 ps:和以前明显的区别:以前数据修改后只能通过刷新才能看得到变化。现在由于vm的作用,数据一旦发生变化,就会立刻显示到页面中,无须刷新。

最近遇到的面试题:
手写防抖:
function fd (fn,delay,ctx) {
    let movement = null
    return function () {
    let args = arguments
    clearTimeout(movemnt)
    movement = setTimeout(function(){
        fn.apply(ctx.args)
        },delay)
    }
}

面试官:两个透明方法是什么?
答:rgba和opacity
面试官:有什么区别?
答:rgba的透明是背景透明,字不会变透明。opacity的透明是全都会变得透明。
面试官:确定吗?
答:大概~
面试官:你对数组的方法有什么了解?
答:splice、slice、pop、shift、unshift、push之类的
面试官:就没有高级的数组方法?
答:contact map filter some every 之类的?
面试官:some和every的区别是什么?
答:some有真就真,every有假就假
面试官:什么叫有真就真,有假就假?听不懂
答:some就是通过给定的判断条件,数组里面只要有一个符合条件,则返回真。而every相反,只要有一个元素不符合条件都返回假。
面试官:说一下水平居中垂直的方法
答:1.display:flex; justify-content:center; align-items:center;
    2.position:fixed 上下左右都为0,然后margin auto
    3.position:fixed 上下左右都为0,position:fixed,tranfrom:tranlate(-50%,-50%)
面试官:你知道eventloop的机制吗?
答:知道,就是同步代码逐行执行,遇到异步就会记录下来,等待时机,当同步代码全部执行完时,
    并且异步代码的网络请求成功或定时任务完成(没说完就被打断)
面试官:微任务和宏任务知道吗?哪个先执行
答:微任务。好像是因为由两个不同的组织定的,所以有所区别?
面试官:跨域是什么?解决方案是什么?
答:跨域就是要求网站和服务器同源,通俗的说就是script可以绕过跨域的问题,通过服务器拼接字符串返回数据。
面试官:不是这个,解决方案呢?
答:沉默。。。
从网上查的正确答案:跨域是指浏览器不能执行其它网站的脚本。
解决方案:[9种常见的前端跨域解决方案(详解) - 知乎 (zhihu.com)](https://zhuanlan.zhihu.com/p/81809258) 

面试官:你还会什么?除了三件套
答:vue啊git啊啥的也了解一点
面试官:了解一点? vue的计算属性能不能发送请求?
答:懵了,没说话~
问面试官:算了,我换一个吧,h5中地理定位了解吗?
答:用哪个g什么的
面试官:我现在就要获取你的定位,怎么做?
答:查文档。。。。
正确答案:navigator.geolocation.getCurrentPositon(showPositon)
面试官:行吧
面试官跑路