1.箭头函数和普通函数的区别是什么?

普通函数this:

  1. this的指向可变,默认指向调用他的那个对象,使用call,apply,bind绑定,this指的是绑定该函数的对象。
  2. 在默认情况下,没找到直接调用者,this指的是window。
  3. 在严格模式下,没有直接调用者的函数中的this是undefined。

箭头函数this:

  1. 在使用=>定义函数的时候,this的指向是其上下文的this,而不是使用时所在的对象,任何方法都改变不了其指向;
  2. 不能够用作构造函数,这就是说,不能够使用new命令,否则就会抛出一个错误;
  3. 不可以使用arguments对象,该对象在函数体内不存在。如果要用,可以用 rest 参数代替。
  4. 不可以使用yield命令,因此箭头函数不能用作 Generator 函数

2.怎么理解vue单向数据流

这个概念出现在组件通讯,父子间通过props将数据传给子组件,但是这个prop子组件不能修改,修改会引起问题,必须有父组件修改,子组件想修改数据,只能通过$emit()派发一个自定义事件,父组件收到后,由父组件修改

3.assets和static的区别

相同点:assets和static两个都是存放静态资源文件。项目中所需要的资源文件图片,字体图标,样式文件等都可以放在这两个文件下,这是相同点
不相同点:assets中存放的静态资源文件在项目打包时,也就是运行npm run build时会将assets中放置的静态资源文件进行打包上传,所谓打包简单点可以理解为压缩体积,代码格式化。而压缩后的静态资源文件最终也都会放置在static文件中跟着index.html一同上传至服务器。static中放置的静态资源文件就不会要走打包压缩格式化等流程,而是直接进入打包好的目录,直接上传至服务器。因为避免了压缩直接进行上传,在打包时会提高一定的效率,但是static中的资源文件由于没有进行压缩等操作,所以文件的体积也就相对于assets中打包后的文件提交较大点。在服务器中就会占据更大的空间。
建议:将项目中template需要的样式文件js文件等都可以放置在assets中,走打包这一流程。减少体积。而项目中引入的第三方的资源文件如iconfoont.css等文件可以放置在static中,因为这些引入的第三方文件已经经过处理,我们不再需要处理,直接上传

4.vue中怎么实现组件样式私有化

在style标签中添加scoped

5.keep-alive标签的作用

keep-alive 是 Vue 内置的一个组件,可以使被包含的组件保留状态,或避免重新渲染

6.v-on可以监听多个方法吗
可以,<input type="text" v-on="{ input:onInput,focus:onFocus,blur:onBlur, }">

7.vue子组件中data为什么必须是一个函数

组建中的data写成一个函数,数据以函数返回值的形式定义,这样每次复用组件的时候,都会返回一份新的data,相当于每个组件实例都有自己私有的数据空间,它们只负责各自维护的数据,不会造成混乱。而单纯的写成对象形式,就是所有的组件实例共用了一个data,这样改一个全都改了。