持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第19天,点击查看活动详情
1.双向绑定原理是什么?
vue双向绑定:数据变化更新视图,视图变化更新数据
vue.js 则是采用数据劫持 + 发布者-订阅者 模式的方式, 通过Object.defineProperty( )的方法来监听各个属性的setter,getter,在数据变动时发布消息给订阅者。wacther收到通知就执行相应的函数,解析器就解析指令更换数据,更新视图。
用wacher连接监听器和解析器
1.监听器Observer,用来劫持并监听所有属性的setter,getter,如果有变动的,就通知订阅者Watcher。
2.订阅者Watcher,每一个Watcher都绑定一个更新函数,watcher可以收到属性的变化通知并执行相应的函数,从而更新视图。
3.实现一个解析器Compile,解析模板指令,并替换模板数据,初始化视图
可以扫描和解析模板指令(v-model,v-on等指令),如果节点存在v-model,v-on等指令,则解析器Compile初始化这类节点的模板数据,使之可以显示在视图上,然后初始化相应的订阅者(Watcher)。
2.vue路由的两种模式的区别是什么?
hash 模式和 history 模式都属于浏览器自身的特性,Vue-Router 只是利用了这两个特性(经过调用浏览器提供的接口)来实现前端路由。
hash模式: 用的“#”再url中指定网页的位置。 #以及后面的数据称为hash。
1.hase没有被包含在http请求中,因此不会重新刷新页面
2.每改变一次hash,会被浏览器历史访问增加一个记录
3.用hashchange监听变化
history模式:采用的是history历史记录栈接口,里面有back,go等方法,可以获取历史信息,也可以跳转页面。 1.vue-Router 主要利用了新特性putState(),replaceState()在不刷新的情况下对历史记录进行修改。
3.如何解决跨域至少三种?
1.nginx反向代理
2.使用jsnop解决(jsonp的原理是动态插入script标签) 只支持get
3.cors
CORS 需要浏览器和后端同时支持。IE 8 和 9 需要通过 XDomainRequest 来实现。
浏览器会自动进行 CORS 通信,实现 CORS 通信的关键是后端。只要后端实现了 CORS,就实现了跨域。
4.postMessage
postMessage()方法允许来自不同源的脚本采用异步方式进行有限的通信,可以实现跨文本档、多窗口、跨域消息传递。
结束语
希望大家能够喜欢我的文章,我真的很用心在写,也希望通过文章认识更多志同道合的朋友。
最后伙伴们,如果喜欢我的可以给点一个小小的赞👍或者关注➕都是对我最大的支持。