前端面试积累 2020-08-12

一、vue组件中data为什么必须是一个函数?

这是由于JavaScript的特性导致的,在component中,data必须是以函数的形式存在,不可以是对象。
在组件中的data写出一个函数,数据以函数返回值的形式定义,这样每次复用组件的时候,都会返回一份新的data,相当于每个组件实例都有自己私有的数据空间,他们只需要负责维护各自的数据,不会造成混乱。而单纯写成对象形式的话,就是所有的组件实例共用一个data,这样改一个全都改了。

二、请说下封装 vue 组件的过程?

  1. 首先建立组件的模板,先把架子搭起来,然后考虑好组件的样式和基本逻辑结构。
  2. 准备好组件的数据输入,即分析好逻辑,确定好 props里面的数据、类型
  3. 准备好组件的数据输出,即根据组件逻辑,做好要暴露出来的方法
  4. 封装完毕后,直接调用即可。

三、为什么使用ReactReact 有那些优势?

  1. React 速度很快:它并不直接对DOM进行操作,而是引入一个叫做虚拟DOM的概念,安插在JavaScript逻辑和实际的DOM之间,所以性能比较好
  2. 跨浏览器兼容:虚拟DOM帮助我们解决了跨浏览器问题,它为我们提供了标准化的API,甚至可以在IE8中使用
  3. 一切都是component:代码更加模块化,重用代码更容易,代码可维护性更高
  4. 单向数据流Flux 是一个用于在 JavaScript 应用中创建单向数据层的架构,它随着React视图库的开发而被Facebook概念化
  5. 同构、纯粹的JavaScript:因为搜索引擎的爬虫程序依赖的是服务端响应,而不是JavaScript的执行,所以预渲染应用有助于搜索引擎的优化
  6. 兼容性好加粗样式:比如使用RequireJS来加载和打包,而BrowserifyWebpack适用于构建大型应用。他们使得那些艰难的任务变得简单化。

四、说一下浏览器 cookiesession 的认识。

  • session 是基于cookie实现的。
  • cookie保存在客户端浏览器中,而session是保存在服务器上;
  • cookie的机制是通过检查客户身上的通行证来确定用户的身份,session的机制就是通过检查服务器上的客户表来确定客户的身份;session相当于在服务器上建立一份客户档案,客户来访问的时候只需要通过查询客户表就可以了。
  • cookiesession的区别:
  1. 存放的位置cookie是存在与客户端的临时文件夹中;session是存在于服务器的内存中,一个session域对象为一个用户浏览器服务。
  2. 安全性cookie是以明文的方式存放在客户端上,安全性比较低,但是可以通过一个加密算法进行加密后存放;session是存放在服务器的内存中,所以安全性比较好。
  3. 生命周期cookie的生命周期是通过设置有效时间来进行累计的,从创建开始计时,有效时间结束即cookie生命周期结束;session的生命周期是间隔的,从创建时开始计时,如果在有效时间内没有被访问,那么session的生命周期就会被销毁,但是如果在这个时间内访问过,那么将重新计算session的生命周期。关机会造成session生命周期的结束,但是对cookie没有影响。
  4. 访问范围cookie为多个用户浏览器共享;session为一个用户浏览器独享。

五、DOM 事件有哪些阶段?谈谈对事件代理的理解?

  • DOM事件分为三大阶段:

    • 捕获阶段(事件从Document节点自上而下向目标节点传播的阶段)
    • 目标阶段(真正的目标节点正在处理事件的阶段)
    • 冒泡阶段(事件从目标节点自下而上向Document节点传播的阶段)
  • 事件代理简单来说就是:事件不直接绑定到某个元素上,而是绑定到该元素的父元素上,进行触发事件操作时,在通过条件进行判断,执行事件触发后的语句。

  • 事件代理的好处:(1)使代码更简洁;(2)节省内存开销;

六、你能描述一下渐进增强和优雅降级之间的不同吗?

  • 渐进增强:针对低版本浏览器进行构建页面,保证最基本的功能实现,然后再针对高版本浏览器进行效果、交互等改进和追加功能,达到更好的用户体验。
  • 优雅降级:是从一开始就构建一套完整的功能,然后在针对低版本浏览器进行兼容处理。
  • 区别:优雅降级是从复杂的现状开始,并试图减少用户体验的供给,意味着往回看;而渐进增强则是从一个非常基础的,能够起作用的版本开始,并不断扩充,以适应未来环境的需要,意味着朝前看,同时保证其根基处于安全地带。
  • 其实使用这两种设计范例的人都有其各自的观点:
    • 渐进增强的观点认为应该关注内容的本身,不管建立网站的原因是什么,他们所有的相同点都是基于内容的,所以渐进增强成为一种更为合理的设计范例,这也是他被yahoo采纳并且构建的原因。
    • 而优雅降级的观点认为应该针对那些最高级、最完善的浏览器来设计网站,那些被认为过时了的或者是有功能缺失的浏览器的测试工作应该安排在开发周期的最后阶段,并且把测试对象限定为主流浏览器的前一个版本。所以在这种设计范例下,旧版的浏览器就被认为仅能提供 “简陋却无妨” 的浏览体验。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值