v-if v-else v-on v-bind v-show v-model 父组件主动获取子组件的数据和方法: 1.调用子组件的时候定义一个ref,其中children为子组件别名 2.在父组件脚本里面通过 this.$refs.header.属性 this.$refs.header.方法 子组件主动获取父组件的数据和方法,在子组件脚本中通过如下方式获取: this.$parent.数据 this.$parent.方法 在脚本中获取另一个组件的值时展示在页面,需要在mounted属性中加一个方法,初始化要展示的值, MVVM的模式 由 Model、View、ViewModel 三部分构成,Model 层代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑;View 代表UI 组件,它负责将数据模型转化成UI 展现出来,ViewModel 是一个同步View 和 Model的对象。 在MVVM架构下,View 和 Model 之间并没有直接的联系,而是通过ViewModel进行交互,Model 和 ViewModel 之间的交互是双向的, 因此View 数据的变化会同步到Model中,而Model 数据的变化也会立即反应到View 上。 ViewModel 通过双向数据绑定把 View 层和 Model 层连接了起来,而View 和 Model 之间的同步工作完全是自动的,无需人为干涉,因此开发者只需关注业务逻辑,不需要手动操作DOM, 不需要关注数据状态的同步问题,复杂的数据状态维护完全由 MVVM 来统一管理。 组件没有没销毁 组件被销毁的情况 图片懒加载的原理很简单,就是我们先设置图片的data-set属性(当然也可以是其他任意的,只要不会发送http请求就行了,作用就是为了存取值)值为其图片路径,由于不是src,所以不会发送http请求。 然后我们计算出页面scrollTop的高度和浏览器的高度之和, 如果图片举例页面顶端的坐标Y(相对于整个页面,而不是浏览器窗口)小于前两者之和,就说明图片就要显示出来了(合适的时机,当然也可以是其他情况),这时候我们再将 data-set 属性替换为 src 属性即可。 这个开源的库也有6406个star,好处在于他是原生js实现,不依赖于jquery/zepto, 自动监测可能发生变化的 lazyload 节点,不需要额外初始化, 并且支持响应式图片 srcset, 性能高,改善seo。强烈推荐!!! 因为hash发生变化的url都会被浏览器记录下来,从而你会发现浏览器的前进后退都可以用 包括back,forward,go三个方法,对应浏览器的前进,后退,跳转操作,有同学说了,(谷歌)浏览器只有前进和后退,没有跳转,嗯,在前进后退上长按鼠标,会出来所有当前窗口的历史记录,从而可以跳转(也许叫跳更合适): 修改历史状态 history.forward(); https://segmentfault.com/a/1190000019208626#item-6 计算属性computed : 侦听属性watch: Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。 vuex 一般用于中大型 web 单页应用中对应用的状态进行管理,对于一些组件间关系较为简单的小型应用,使用 vuex 的必要性不是很大,因为完全可以用组件 prop 属性或者事件来完成父子组件之间的通信,vuex 更多地用于解决跨组件通信以及作为数据中心集中式存储数据。 v-model就是vue的双向绑定的指令,能将页面上控件输入的值同步更新到相关绑定的data属性,也会在更新data绑定属性时候,更新页面上输入控件的值。 v-model作为双向绑定指令也是vue两大核心功能之一,使用非常方便,提高前端开发效率。在view层,model层相互需要数据交互,即可使用v-model。 v-model主要提供了两个功能,view层输入值影响data的属性值,data属性值发生改变会更新view层的数值变化。 在根dom上加上 style=“display: none;” :style=”{display: ‘block’}” ok,完美解决vue初始加载前的花屏现象 实现mvvm的双向绑定,是采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调。就必须要实现以下几点: 4、mvvm入口函数,整合以上三者 mounted钩子在主页挂载时执行一次,如果没有缓存的话,再次回到主页时,mounted还会执行,从而导致ajax反复获取数据。 activated钩子则不受缓存的影响,每次重新回到主页都会执行。 MVC是三个单词的首字母缩写,它们是Model(模型)、View(视图)和Controller(控制)。 这个模式认为,程序不论简单或复杂,从结构上看,都可以分成三层。 这三层是紧密联系在一起的,但又是互相独立的,每一层内部的变化不影响其他层。每一层都对外提供接口(Interface),供上面一层调用。这样一来,软件就可以实现模块化,修改外观或者变更数据都不用修改其他层,大大方便了维护和升级。 由 Model、View、ViewModel 三部分构成,Model 层代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑;View 代表UI 组件,它负责将数据模型转化成UI 展现出来,ViewModel 是一个同步View 和 Model的对象。 在MVVM架构下,View 和 Model 之间并没有直接的联系,而是通过ViewModel进行交互,Model 和 ViewModel 之间的交互是双向的, 因此View 数据的变化会同步到Model中,而Model 数据的变化也会立即反应到View 上。 ViewModel 通过双向数据绑定把 View 层和 Model 层连接了起来,而View 和 Model 之间的同步工作完全是自动的,无需人为干涉,因此开发者只需关注业务逻辑,不需要手动操作DOM, 不需要关注数据状态的同步问题,复杂的数据状态维护完全由 MVVM 来统一管理。 会触发 下面这几个beforeCreate, created, beforeMount, mounted 。 1.手段:v-if是动态的向DOM树内添加或者删除DOM元素;v-show是通过设置DOM元素的display样式属性控制显隐; 2.编译过程:v-if切换有一个局部编译/卸载的过程,切换过程中合适地销毁和重建内部的事件监听和子组件;v-show只是简单的基于css切换; **4.性能消耗:**v-if有更高的切换消耗;v-show有更高的初始渲染消耗; **5.使用场景:**v-if适合运营条件不大可能改变;v-show适合频繁切换。 v-for和v-if不应该一起使用,必要情况下应该替换成computed属性。 v-for比v-if优先级高,所以嵌套使用的的话,每次v-for都会执行v-if,造成不必要的计算,影响性能,尤其是当之需要渲染很小一部分的时候。 虚拟DOM不会进行排版与重绘操作 虚拟DOM进行频繁修改,然后一次性比较并修改真实DOM中需要改的部分(注意!),最后并在真实DOM中进行排版与重绘,减少过多DOM节点排版与重绘损耗 虚拟DOM有效降低大面积(真实DOM节点)的重绘与排版,因为最终与真实DOM比较差异,可以只渲染局部(同2) 真实DOM频繁排版与重绘的效率是相当低的 虚拟dom的缺点 比较概念的解释是,目标和观察者是基类,目标提供维护观察者的一系列方法,观察者提供更新接口。具体观察者和具体目标继承各自的基类,然后具体观察者把自己注册到具体目标里,在具体目标发生变化时候,调度观察者的更新方法。 比如有个“天气中心”的具体目标A,专门监听天气变化,而有个显示天气的界面的观察者B,B就把自己注册到A里,当A触发天气变化,就调度B的更新方法,并带上自己的上下文。 解决跨域问题 设置document.domain解决无法读取非同源网页的 Cookie问题 跨文档通信 API:window.postMessage() 调用postMessage方法实现父窗口向子窗口发消息(子窗口同样可以通过该方法发送消息给父窗口) 它可用于解决以下方面的问题: 页面和其打开的新窗口的数据传递 JSONP JSONP是服务器与客户端跨源通信的常用方法。最大特点就是简单适用,兼容性好(兼容低版本IE),缺点是只支持get请求,不支持post请求。 核心思想:网页通过添加一个 Axios是基于ajax+promise开发一个交互插件。目前基本用于vue项目中进行前后数据请求。项目中一般基于axios做二次封装使用。 只做过简单的axios封装
1.常用的vue指令有哪些:
2.浏览器页面之前如何传参
3.父子组件互相调用方法
4.vue设计模式请简述
5.组件保持状态怎么做
6.图片懒加载原理,如何实现
原理:
实现:
我一般使用第三方库lazysizes
7.vue路由模式的区别
在vue-router路由对象中,路由有两种模式: hash 和 history,而默认的是hash模式,hash模式背后的原理是:
hash路由
window.onhashchange = function(event) { console.log(event.oldURL, event.newURL); let hash = loaction.hash //通过location对象来获取hash地址 console.log(hash) // "#/notebooks/260827/list" 从#号开始 }
history api可以分为两大部分,切换和修改,参考MDN切换历史状态
history.go(-2);//后退两次 history.go(2);//前进两次 history.back(); //后退 hsitory.forward(); //前进
包括了history.pushState(),history.replaceState()两个方法,这两个方法接收三个参数:stateObj,title,urlhistory.pushState({color:'red'}, 'red', 'red'}) history.back();
通过pushstate把页面的状态保存在state对象中,当页面的url再变回这个url时,可以通过event.state取到这个state对象.8.vue之间组件通信方式
9.watch和computed的区别,data和computed的区别
data 和 computed 最核心的区别在于 data 中的属性并不会随赋值变量的改动而改动,而computed 会。
10.vue中路由传参的方式
和2一样
11.vue的生命周期,哪个生命周期可以看到this,第一个发送请求的是哪一个
false
以阻止该错误继续向上传播。在哪个生命周期中都可以看到this
12.对于vuex的理解一些使用场景
对于vuex的理解
一些使用场景
13.对于vue中v-model的原理的理解,v-on可以监听多个方法么
一,v-model是什么
二,为什么使用v-model
三,v-model的原理简单描述
v-on可以监听多个方法
14.vue初始化页面闪动问题
<div class="app" style="display: none;" :style="{display: 'block'}"> {{message}}</div>
15.谈谈对vue双向数据绑定原理的理解
1、实现一个数据监听器Observer,能够对数据对象的所有属性进行监听,如有变动可拿到最新值并通知订阅者
2、实现一个指令解析器Compile,对每个元素节点的指令进行扫描和解析,根据指令模板替换数据,以及绑定相应的更新函数
3、实现一个Watcher,作为连接Observer和Compile的桥梁,能够订阅并收到每个属性变动的通知,执行指令绑定的相应回调函数,从而更新视图16.钩子的actived和mounted的区别
17.router和route的区别
router是VueRouter的一个对象,通过Vue.use(VueRouter)和VueRouter构造函数得到一个router的实例对象,这个对象中是一个全局的对象,他包含了所有的路由包含了许多关键的对象和属性。
route是一个跳转的路由对象,每一个路由都会有一个route对象,是一个局部的对象,可以获取对应的name,path,params,query等
18.路由守卫都有什么,哪个守卫可以在在next中传函数(beforeRouteEnter)
19.mvc和mvvm的区别,数据劫持的优点
MVVM的模式
20.页面加载会调用几个钩子
21.常用的事件修饰符有哪些
22.vif,vshow的区别
23.同时写vif和vfor执行结果是怎么样的
24.虚拟DOM和真实DOM的区别,虚拟DOM的优缺点
虚拟dom的优点
25.观察者和发布者订阅有什么区别
观察者模式
1.发布/订阅模式
26.跨域问题是如何解决的,对跨域的理解,服务器之间存在跨域么
因为浏览器是通过document.domain属性来检查两个页面是否同源,因此只要通过设置相同的document.domain,两个页面就可以共享Cookie(此方案仅限主域相同,子域不同的跨域应用场景。)
多窗口之间消息传递
页面与嵌套的iframe消息传递
上面三个场景的跨域数据传递27.在开发中使用axios用于干什么,axios的封装
28.restful接口规范
RestFul风格(接口)
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算