web前端面试题@二(Keeplive、V-show和v-if的区别、同源策略及跨域)

一、详述Keeplive组件————

    ⑴.为什么要使用keep-alive?

            在vue中,我们使用component内置组件或者vue-router切换视图的时候,由于vue会主动卸载不使用的组件,所以我们不能保存组件之前的状态,而我们经常能遇到需要保存之前状态的需求,例如:搜索页(保存搜索记录),列表页(保存之前的浏览记录)等等。

    ⑵.keep-alive的作用?

            Keep-alive是一个vue的内置组件,它能将不活动的组件保存下来,而不是直接销毁,当我们再次访问这个组件的时候,会先从keep-alive中存储的组件中寻找,如果有缓存的话,直接渲染之前缓存的,如果没有的话,再加载对应的组件。

            作为抽象组件,keep-alive是不会直接渲染在DOM中的。

    ⑶.Keep-alive的属性?

        Keep-alive提供了三种可选属性

        Include-字符串或数组或正则表达式。只有名称匹配的组件被缓存。

        Exclude -字符串或数组或正则表达式。名称匹配的组件不会被缓存。

        Max -数字类型。表示最多可以缓存多少组件实例。

    ⑷.对于keep-alive需要知道的事情?

        Keep-alive提供了两个生命钩子,分别是activated与 deactivated。

        因为Keep-alive会将组件保存在内存中,并不会销毁以及重新创建,所以不会重新调用组件的created等方法,需要用activated与deactivated这两个生命钩子来得知当前组件是否处于活动状态。

二、V-show和v-if的区别?

        V-show有较高的渲染成本,

        V-if有较高的切换成本。


        V-if是真正的条件渲染,确保切换过程中条件内的事件监听器和子组件适当的被销毁和重建。

        V-show的元素始终被渲染并保存在dom中,操作的只是display属性控制演示影藏。

三、同源策略及跨域?

    (1).同源策略

        源(origin)—— 就是协议、域名和端口号。若地址里面的协议、域名和端口号均相同则属于同源。

        同源策略——同源策略是浏览器的一个安全功能,不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源。所以a.com下的js脚本采用ajax读取b.com里面的文件数据是会报错的。

    不受同源策略限制的

            1.页面中的链接,重定向以及表单提交是不会受到同源策略限制的。

            2.跨域资源的引入是可以的。但是js不能读写加载的内容。如嵌入到页面中的