钩子函数不用手动触发
el选项vue实例编译后模板挂载到index.html的id叫APP的标签上-----就是你需要把它挂载到哪个盒子上
------------------------------提问-----------------------------
1.1.Vue 组件 data 为什么必须是函数
如果data是一个函数的话,这样每复用一次组件,就会返回一份新的data,类似于给每个组件实例创建一个私有的数据空间,让各个组件实例维护各自的数据。而单纯的写成对象形式,就使得所有组件实例共用了一份data,就会造成一个变了全都会变的结果。
所以说vue组件的data必须是函数。这都是因为js的特性带来的,跟vue本身设计无关
2. Vue 中怎么自定义过滤器
里面有两个参数,第一个是要过滤 的名字,第二个是一个回调函数,函数里面可以传多个参数,参数就是要过滤的接受的值
全局的 话在main.js里面(1)全局方法 Vue.filter() 注册一个自定义过滤器,必须放在Vue实例化前面---记得要加return
还有局部
就是在使用的组件里面注册,filter以对象的形式-也就是和方法格式一样,然后记得加return
3.什么是闭包
闭包就是能够读取其他函数内部变量的函数
4.如何使用css实现一个三角形
首先设置一个宽高等于0的盒子,然后定义四个边框,边框记得给值,然后再把三个边框加透明,保留的那个就是三角形
5.为什么虚拟 dom 会提高性能
虚拟DOM其实就是一个JavaScript对象。通过这个JavaScript对象来描述真实DOM。
虚拟 dom 相当于在 js 和真实 dom 中间加了一个缓存,利用 dom diff 算法避免了没有必要的 dom 操作,从而提高性能。
6.computed和watch的区别
compute 1. 支持缓存,只有依赖数据发生改变,才会重新进行计算
2. 不支持异步,当computed内有异步操作时无效,无法监听数据的变化
3.computed 属性值会默认走缓存,计算属性是基于它们的响应式依赖进行缓存的,也就是基于data中声明过或者父组件传递的props中的数据通过计算得到的值
4. 如果一个属性是由其他属性计算而来的,这个属性依赖其他属性,是一个多对一或者一对一,一般用computed
5.如果computed属性属性值是函数,那么默认会走get方法;函数的返回值就是属性的属性值;在computed中的,属性都有一个get和一个set方法,当数据变化时,调用set方法。
watch 1. 不支持缓存,数据变,直接会触发相应的操作;
2.watch支持异步;
3.监听的函数接收两个参数,第一个参数是最新的值;第二个参数是输入之前的值;
4. 当一个属性发生变化时,需要执行对应的操作;一对多;
5. 监听数据必须是data中声明过或者父组件传递过来的props中的数据,当数据变化时,触发其他操作,函数有两个参数,
immediate:组件加载立即触发回调函数执行,
deep: 深度监听,为了发现对象内部值的变化,复杂类型的数据时使用,例如数组中的对象内容的改变,注意监听数组的变动不需要这么做。注意:deep无法监听到数组的变动和对象的新增,参考vue数组变异,只有以响应式的方式触发才会被监听到。