快速掌握 Performance 性能分析:一个真实的优化案例

Chrome Devtools 的 Performance 工具是性能分析和优化的利器,因为它可以记录每一段代码的耗时,进而分析出性能瓶颈,然后做针对性的优化。

RxJS 核心

  • 可观察对象

  • 订阅

  • 观察者

    1
    observable.subscribe(observer);

SOLID 是以下是原则的缩写

  • S 单一职责原则
  • O 开闭原则
  • L 里氏替换原则
  • I 接口隔离原则
  • D 依赖倒置原则

(ngModelChange) 和 (change) 的区别

1.触发时机

  • ngModelChange 在 ngModel 值改变之前
  • change 在 ngModel 值改变之后

2.触发条件

通过 JavaScript 改变 ngModel 值,ngModelChange 也会被触发,change 不会

UDP、TCP 和 QUIC

Quic 全称 quick udp internet connection [1],“快速 UDP 互联网连接”,(和英文 quick 谐音,简称“快”)是由 google 提出的使用 udp 进行多路并发传输的协议。

Quic 相比现在广泛应用的 http2+tcp+tls 协议有如下优势 [2]:

  1. 减少了 TCP 三次握手及 TLS 握手时间。
  2. 改进的拥塞控制。
  3. 避免队头阻塞的多路复用。
  4. 连接迁移。
  5. 前向冗余纠错。

如何判断组件使用 HTML 生成还是 JS 生成?

  • HTML 结构相对固定,可以用 JS 生成,减少重复 HTML 代码
  • JavaScript 生成实际上也是在 HTMl 之上继续封装,HTMl 提供的方法,JavaScript 也需要提供,例如 ListBlock 里面的 select 组件支持的属性,配置 JS 都需要有相应的字段支持。
  • JS 生成可以理解为有一段模板引擎,在运行时动态生成模板

为什么服务器没有跨域限制?浏览器跨域限制是为了阻止什么?

浏览器跨域规定了只能向同域的服务器发起 HTTP 请求,当恶意脚本注入了网站后,也无法获取/仿造身份信息访问到服务器数据。

服务器本身就没有缓存身份信息,所以无需做限制,放上服务器的都能访问,而核心数据靠服务自己做身份验证

因为上面的说法还是说得不是很清楚,这个问题还是继续思考

用户 - 浏览器 - 服务器,浏览器是一个中间商,所以他为了保护用户的权益,设置了跨域限制,避免攻击者损害用户权益。

而服务器是一个接收方,可以主动的做跨域限制(例如开黑白名单),但是默认谁都可以访问。

ngOnInit 和 ngAfterViewInit 区别

ngOnInit() is called after ngOnChanges() was called the first time. ngOnChanges() is called every time inputs are updated by change detection.

ngAfterViewInit() is called after the view is initially rendered. This is why @ViewChild() depends on it. You can’t access view members before they are rendered.

如何查学术论文?

  • 谷歌学术/谷粉学术(国内的镜像)
  • 有道云-学术资源
  • 如果论文收费,通过 doi.org 的 ID 后缀在谷粉学术粘贴

快速选择合适的 license

choosealicense

快速生成 electron 桌面 app icon

electron-icon-builder

electron icon 如果是 png 格式,注意不要有透明边距,否则制作出来的 app 会有白边

检查 package.json 是否有最新包的 npm 插件

https://www.npmjs.com/package/npm-check-updates

1
2
npm install -g npm-check-updates
ncu