今天面了一家公司,电面。差不多是这些题目
- 动画
- 浏览器储存
- 缓存机制 – 强缓存和协商缓存
- vue响应式原理 – 2和3
- react事件
- 浏览器安全和工程化
- http协议
- Promise
- typescript
- 浏览器性能优化
- vue3相比vue2的优点
- webpack优化
- 首屏优化
- 元素隐藏
今天面了一家公司,电面。差不多是这些题目
先看代码
1 | const a = 1 |
乍一看,是不是感觉挺正常的,在浏览器的log窗口应该能输出1,2,3,才对
然后在浏览器跑一下,发现
然后emm排查了一下,语法是没问题的,浏览器版本是最新的开发版本,es6的语法肯定是支持的,那问题其实就是a=1 后面漏了分号,所以代码就成了这样
1 | const a = 1[...[1,2,3]].forEach(item=>console.log(item)) |
那代码成了这样那肯定不能正确解析了~
果然,漏写分号不是好习惯~
vue3 出了 beta,了解一下响应式数据的实现
下面这些是在 reactive 中导入的外部文件
1 | import { isObject, toRawType, def, hasOwn, makeMap } from '@vue/shared'##这些都是通用方法 |
好奇provide怎么实现的,然后呢就去扒了下源码hhh,看了下provide的function,有点懵,provide的代码在runtime-core/src/apiInject.ts里面
1 | export interface InjectionKey<T> extends Symbol {} |
vuex 本质上就是 vue 中的 mixin,store 在每个 vue 组建实例创建的时候通过 mixin 的方式注入的,mixin 就类似这样的格式
1 | const mixComponent = { |
当组建和混入的 mixins 含有同名选项时,这些选项将会以适当的方式进行合并,比如 mixins 中的 data 和组建的 data 有同名属性时,那么将会以组建中的数据为准。当具有同名的钩子函数时,那么同名的钩子函数将会组成一个数组,它们都将被调用。另外,mixins 中的钩子函数将会在组件自身钩子之前调用。
值为对象的选项时,它们将会被合并为一个对象,k-v 冲突时,取组件中的 kv。
而 vuex 正是全局的 mixins,将会在每个组件 create 的时候注入
内网穿透就是把本地服务映射到具有公网IP地址的服务器上,通过访问在公网上的机器,就可以访问到内网