Event Loop(事件循环)

浏览器 进程 / 线程

  • 进程:一个网页就是一个进程
  • 线程:
    1. 类别A:GUI 渲染线程 (与主线程互斥)
    2. 类别B:JS 引擎线程 (主线程
    3. 类别C:EventLoop轮询处理线程
    4. 类别D:其他线程,有 定时器触发线程 (setTimeout)、http 异步线程、浏览器事件线程 (onclick)等等。

线程

props 的 default 是对象和数组

Props & PropType

1
2
3
4
5
6
7
props: {
editServiceConfig: {
type: Object as PropType<ServiceItem>,
required: false,
default: () => {}
}
}

PropType

  • 为了类型推论

Props 的 默认值

  • 对象或数组的 default 必须从一个工厂函数获取
  • props 会在一个组件实例创建之前进行验证,所以实例的属性 (如 data、computed 等) 在 defaultvalidator 函数中是不可用的。

Vue 响应性

跟踪变化

Proxy

  • Proxy 是一个对象,它包装了另一个对象,并允许你拦截对该对象的任何交互
  • new Proxy(target, handler)

Reflect

  • 解决this绑定问题:将任何方法都绑定到这个 Proxy

Composition Api - 组合式API

Composition Api

解决碎片化导致理解和维护复杂组件变得困难。将同一个逻辑关注点相关代码收集在一起

setup选项

  • 在组件创建之前执行,一旦 props 被解析,就将作为组合式 API 的入口。

    避免使用 this,因为其发生在 datacomputedmethods被解析之前,还没有找到组件实例

  • setup 是接收 propscontext 的函数,return的所有内容都暴露给组件的其余部分

Event Bus

初始化

  • EventBus 是一个不具备 DOM 的组件,仅仅具有它的实例方法
  • 基座中使用的是全局注册:即 发布/订阅模式
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // event-bus.js
    import Vue from 'vue'
    export const EventBus = new Vue()

    // 全局注册 不需要注册
    Vue.prototype.$eventBus = new Vue()
    // 或者
    import { EventBus } from './eventBus';
    Vue.prototype.$eventBus = new EventBus()

path.join & path.resolve

path.join 和 path.resolve区别

path.join([path1][, path2][, ...]) 连接路径

1
2
3
4
var path = require('path'); 
//合法的字符串连接
path.join('/foo', 'bar', 'baz/asdf', 'quux', '..')
// 连接后 '/foo/bar/baz/asdf'

path.resolve([from ...], to) 路径解析

  • 解析为一个规范化的绝对路径
  • 类似于对这些路径逐一进行 cd 操作

QA1

第一次 QA 记录

数字变字符串方法

  1. Number()
  2. + -
  3. parseInt()

字符串转数字

  1. toString()
  2. + ""

|| 场景

  • &&: find the first falsy value; 如果第一个是true,则返回第二个

校招面试题

HTML

DTD(文档类型定义)

  • DOCTYPE:严格( strict )和过渡( transitional )
    • 包含严格 DTD 的 DOCTYPE 常常导致页面以标准模式呈现。
    • 包含过度 DTD 和 URI 的 DOCTYPE 也导致页面以标准模式呈现。
    • 但是有过度 DTD 而没有 URI 会导致页面以混杂模式呈现。
    • DOCTYPE 不存在或形式不正确会导致 HTML 和 XHTML 文档以混杂模式呈现。

内核??

1)Trident: IE 以Trident 作为内核引擎;
2) Gecko: Firefox 是基于 Gecko 开发;
3)WebKit: Safari, Google Chrome,傲游3,猎豹浏览器,百度浏览器 opera浏览器;