5.14日总结

247 阅读5分钟

面试总结

一、 vue的生命周期

1、beforeCreate()在这个生命周期函数上只有一些实例本身的事件,在这个钩子上自定义的一系列东西都是不可用的
2、created()它最早可以操作data中数据的函数了
3、beforeMount()在这个生命周期钩子中已经在内存中编译好dom树,但是还没有渲染到页面上 此时指令已经被解析	
4、mounted()已经将内存中的dom树渲染到页面上,最早操作dom元素
运行阶段(会被执行0次到n次  0次 data没有改变)
5、beforeUpdate() 内存中的数据已经改了  页面没有改
6、updated() 页面和内存已经同步了
销毁阶段
7、beforeDestroy() 当对象或者组件被销毁的时候调用,这个钩子上data和其他的事件还是可以用  清楚定时器  释放内存
8、destroyed() 当组件已经被销毁完毕的时候被调用 什么都用不了了
created()和mounted()的区别
created()是最早操作data()中的数据
   mounted()最早操作dom节点

二、 路由拦截

分为响应拦截和请求拦截

三、 vue中的页面的title是怎么设置的

      用doucment.title='标题'

四、 在vue里面用什么请求接口?用ajax()怎么解决跨域问题

ajax 是代理 前端代理我在vue脚手架中的config中的index.js来配置,其中有proxyTable来配置跨域的

第一种:jsonp jsonp的原理是利用动态的创建script标签来请求后端接口的地址,然后传递一个callback参数,后端接受到callback后将数据处理完成,将数据以callback函数调用的方式来返回,callback的参数就是我们要的json数据 第二种:是代理 前端代理我在vue脚手架中的config中的index.js来配置,其中有proxyTable来配置跨域的 第三种:CORS CORS全称跨区资源共享,主要是通过后台工程师设置后端代码达到前端跨区请求

五、 在vue项目中怎么设置环境变量?

主要通过检测process.env.NODE_ENV===”production”和process.env.NODE_ENV===”development”环境,来设置线上和线下环境地址,从而实现线上和线下环境地址的切换

六、 理解vuex

答:vuex是一个状态管理工具,主要解决大中型复杂项目的数据共享问题,主要包括state,actions,mutations,getters和modules 5个要素,主要流程:组件通过dispatch到 actions,actions是异步操作,再actions中通过commit到mutations,mutations再通过逻辑操作改变state,从而同步到组件,更新其数据状态,而getters相当于组件的计算属性对,组件中获取到的数据做提前处理的.再说到辅助函数的作用.

七、 组件通信vue

答:vue组件通讯大致有三种:父传子,子传父,还有兄弟之间通讯 第一种:父传子:主要通过props来实现的 具体实现:父组件通过import引入子组件,并注册,在子组件标签上添加要传递的属性,子组件通过props接收,接收有两种形式一是通过数组形式[‘要接收的属性’ ],二是通过对象形式{  }来接收,对象形式可以设置要传递的数据类型和默认值,而数组只是简单的接收 第二种:子传父:主要通过emit来实现
现:子组件通过通过绑定事件触发函数,在其中设置this.emit(‘要派发的自定义事件’,要传递的值),emit中有两个参数一是要派发的自定义事件,第二个参数是要传递的值
然后父组件中,在这个子组件身上@派发的自定义事件,绑定事件触发的methods中的方法接受的默认值,就是传递过来的参数
第三种:兄弟之间传值有两种方法:
方法一:通过event bus实现
具体实现:创建一个空的vue并暴露出去,这个作为公共的bus,即当作两个组件的桥梁,在两个兄弟组件中分别引入刚才创建的bus,在组件A中通过bus.emit(’自定义事件名’,要发送的值)发送数据,在组件B中通过bus.$on(‘自定义事件名‘,function(v) { //v即为要接收的值 })接收数据

方法二:通过vuex实现 具体实现:vuex是一个状态管理工具,主要解决大中型复杂项目的数据共享问题,主要包括state,actions,mutations,getters和modules 5个要素,主要流程:组件通过dispatch到 actions,actions是异步操作,再actions中通过commit到mutations,mutations再通过逻辑操作改变state,从而同步到组件,更新其数据状态

八 单向数据流

答:单向数据流主要是vue 组件间传递数据是单向的,即数据总是由父组件传递给子组件,子组件在其内部维护自己的数据,但它无权修改父组件传递给它的数据,当开发者尝试这样做的时候,vue 将会报错。这样做是为了组件间更好的维护。 在开发中可能有多个子组件依赖于父组件的某个数据,假如子组件可以修改父组件数据的话,一个子组件变化会引发所有依赖这个数据的子组件发生变化,所以 vue 不推荐子组件修改父组件的数据

九 闭包

闭包说的通俗一点就是打通了一条在函数外部访问函数内部作用域的通道。正常情况下函数外部是访问不到函数内部作用域变量的 三个特性:1.函数套函数 2.内部函数可以直接访问外部函数 3. 变量或参数不会被垃圾回收站回收 优点:1.变量长期驻扎在内存中 2.避免全局污染 3.私有成员在 缺点:常驻内存,增大内存用量 如何解决内存泄漏? 设置为null 删除全局变量 适用场景:for循环,封装组件

         function a(){
         var  num=0
        return function b(){
          
                num++
            return num
           
            
        }

    }
    var f=a()

  console.log(f(),f())