41.递归组件
组件在它的模板内可以递归地调用自己,只有当它有 name 选项时才可以.
1)设置组件name名称
2)在模板中直接使用 <名称/> xx-Yy的名称要写成<xxyy />
3)使用时传入参数的方式和组件在其他组件中使用相同,注意递归终止条件 <xx :props="props"> 倘若组件需要传参数
42.什么是Mixins?
mixins(混入),官方的描述是一种分发 Vue 组件中可复用功能的非常灵活的方式
mixins是一个js对象,它可以包含我们组件中script项中的任意功能选项,如data、components、methods 、created、computed等等。我们只要将共用的功能以对象的方式传入 mixins选项中,当组件使用 mixins对象时所有mixins对象的选项都将被混入该组件本身的选项中来,这样就可以提高代码的重用性,使你的代码保持干净和易于维护。
什么时候使用Mixins?
当我们存在多个组件中的数据或者功能很相近时,我们就可以利用mixins将公共部分提取出来,通过 mixins封装的函数,组件调用他们是不会改变函数作用域外部的。
如何创建Mixins?
在src目录下创建一个mixins文件夹,文件夹下新建一个myMixins.js文件。前面我们说了mixins是一个js对象,所以应该以对象的形式来定义myMixins,在对象中我们可以和vue组件一样来定义我们的data、components、methods 、created、computed等属性,并通过export导出该对象
如何使用Mixins?
在需要调用的组件中引入myMixins.js文件,然后在export default 中引入你需要的对象即可
Mixins的特点
1)方法和参数在各组件中不共享,虽然组件调用了mixins并将其属性合并到自身组件中来了,但是其属性只会被当前组件所识别并不会被共享,也就是其他组件无法从当前组件中获取到mixins中的数据和方法
2)引入mixins后组件会对其进行合并,将mixins中的数据和方法拓展到当前组件中来,在合并的过程中会出现冲突,接下来我们详细了解Mixins合并冲突
与vuex的区别
vuex:用来做状态管理的,里面定义的变量在每个组件中均可以使用和修改,在任一组件中修改此变量的值之后,其他组件中此变量的值也会随之修改。
Mixins:可以定义共用的变量,在每个组件中使用,引入组件中之后,各个变量是相互独立的,值的修改在组件中不会相互影响。
43.阐述清楚浮动的几种方式(常见问题)
(1)父级div定义 height
原理:父级div手动定义height,就解决了父级div无法自动获取到高度的问题。
缺点:只适合高度固定的布局,要给出精确的高度,如果高度和父级div不一样时,会产生问题
(2)父级div定义 overflow:hidden
原理:必须定义width或zoom:1,同时不能定义height,使用overflow:hidden时,浏览器会自动检查浮动区域的高度
(3) 结尾处加空div标签 clear:both
原理:添加一个空div,利用css提高的clear:both清除浮动,让父级div能自动获取到高度
44.什么是ajax? ajax的步骤?
ajax(异步javascript xml) 能够刷新局部网页数据而不是重新加载整个网页。
1.创建xmlhttprequest对象,var xmlhttp =new XMLHttpRequest();XMLHttpRequest对象用来和服务器交换数据。
2.使用xmlhttprequest对象的open()和send()方法发送资源请求给服务器。
3.使用xmlhttprequest对象的responseText或responseXML属性获得服务器的响应。
4.onreadystatechange函数,当发送请求到服务器,我们想要服务器响应执行一些功能就需要使用onreadystatechange函数,每次xmlhttprequest对象的readyState发生改变都会触发onreadystatechange函数。
45.优雅降级和渐进增强
渐进增强:
一开始就针对低版本浏览器进行构建页面,完成基本的功能,然后再针对高级浏览器进行效果、交互、追加功能达到更好的体验。
优雅降级:
一开始就构建站点的完整功能,然后针对浏览器测试和修复。比如一开始使用 CSS3 的特性构建了一个应用,然后逐步针对各大浏览器进行 hack 使其可以在低版本浏览器上正常浏览。