JavaScript 的一些细节

最近看了篇文章,「2021」高频前端面试题汇总之JavaScript篇(上),作者:CUGGZ,感觉文章不错,知识点很全。但是有些细节我研究了一下,对自己有些许帮助,特此记录下来。

Read More

Share

《彼得·林奇的成功投资》读书笔记

《彼得·林奇的成功投资》,英文书名里有一个副标题,How to use what you already know to make money in the market。这句英文所传达的观点其实更贴近股票投资的本质。

下面按章节对一些个人觉得有用的内容摘录出来。

Read More

Share

Goodbye, 2021

生活的悲哀之处在于,我们总是老得太快,而聪明得太慢。
—— 本杰明·富兰克林

忙忙碌碌,一年又过去了。

这篇总结从 12.25 开始写,陆陆续续写到 2022 年 1 月 5 日,基本完工了。以下所说“今年”,指 2021 年;“明年”,指 2022 年。

举个例子:今年过得挺快的,明年可能过得更快。

Read More

Share

如何进行 TypeScript 覆盖率分析

Catalogue
  1. 1. type-coverage
    1. 1.1. type-coverage 的基本使用
    2. 1.2. type-coverage 工作原理
  2. 2. 真实可用的 ts 覆盖率统计算法

自从用了 TypeScript 之后,爱不释手,已经回不去 JavaScript 时代了。最近在公司各个项目中普及 TypeScript,包括对老代码进行 TypeScript 化改造,比较关心项目 TypeScript 覆盖率的变化情况。

type-coverage

调研后找到两个比较好的包,看起来 type-coverage 的使用情况更好一些。

Package Name Weekly Downloads Description
type-coverage 21,838 *.ts, *.js, *.tsx
typescript-coverage-report 19,997

type-coverage 的基本使用

type-coverage 工作原理

真实可用的 ts 覆盖率统计算法

真实项目中,我们的代码不光是 jsts,而是包括了 vue 或者 tsx 等。以我们的项目而言,如何支持 Vue 文件分析是个问题。

另外,直接以 type-coverage 按代码行级别的覆盖率统计,可能会让老项目在 TS 化改造过程中非常没有信心——每天改一点,何时是个头?

其实,可以定义不同的 TS 覆盖率级别(类似于自动驾驶级别),我自己想出来的是这样的:

  • L1 级 TS 覆盖率 = .ts 文件与声明了 lang="ts".vue 文件的个数占所有文件的比例。
  • L2 级 TS 覆盖率 = .ts 文件与声明了 lang="ts" 且组件以 class 声明的 .vue 文件的个数占所有文件的比例。
  • L3 级 TS 覆盖率 = 基于 type-coverage 按行统计得到的 ts 覆盖率。
Share

对买房的思考以及房屋、房地产行业学习笔记

关于房地产行业

“房地产行业是我国的支柱产业。”

Read More

Share

2021年中读书、理财小结

Catalogue
  1. 1. 读书
  2. 2. 理财

简单总结总结上半年吧。

读书

今年上半年读完了 7 本书。

  1. 《世风日上》
  2. 《巴菲特致股东的信(原书第4版)》
  3. 《男孩、鼹鼠、狐狸和马》,这是一本插画书,十几分钟就翻完了。
  4. 《Node学习指南 第2版》,咱是技术人,技术类的书不能少。
  5. 《价值投资实战手册》,非常非常好的一本书。极力推荐给所有对理财感兴趣的朋友。
  6. 《共同基金常识》,基金之父写的书,数据非常权威,可以坚定一个人定投的信念。
  7. 《巴芒演义》,太精彩了。唐朝的书都很棒。

理财

股票收益率 30% 左右,支付宝整体收益率 6% 左右。
资金量,股票:支付宝 = 10:3,所以整体的加权平均收益率 = 24%,还可以。希望下半年基金和股票都能有点上涨。

而从国内经济发展速度来说,下半年还是比较乐观的。

Share

海南之旅

时间:2021-05-09 ~ 2021-05-20
途径地点:北京 -> 石家庄 -> 海口 -> 三亚 -> 海口 -> 南昌 -> 北京

海南,这特么可是热带啊。我这辈子就从来没有去过热带。虽然前年去过珠海,但是我查了一下,那边是亚热带季风海洋性气候,你看,是亚热带而不是热带~~而海南,直接就是“热带季风气候”,啧啧。椰子汁味道都不一样了。

说到椰子汁,海口市路边全都是椰子树,而且结满了椰子,真是神奇。我们在假日海滩边上的小公园里看到当地大爷拿着长杆子摘椰子,很有意思。

Read More

Share

TypeScript,类型系统,及领域模型理念在前端开发中的运用

Catalogue
  1. 1. 前端面临的挑战
    1. 1.1. 阶段1:良好的注释与文档
    2. 1.2. 阶段2:面向对象
    3. 1.3. 阶段3:TypeScript

去年 10 月至今,自己参与了大量内部运营活动管理系统的开发工作,大约到今年2月份的时候,在前任小组长的引导下,自己在新模块的开发中尝试使用 TypeScript 开发。

不试不知道,一试才觉得,真香~~

当年在猫眼用 React 的时候,自己开发过大量的使用了表单的系统,那时候就借助于面向对象的技术封装了很多类,来抽象一些数据结构,当时感觉这样做使得代码很清晰。最近基于 TS 开发的项目,复杂度比当时猫眼的要高更多,TS 提供的静态类型系统可以说提供了很大的帮助。

这篇文章就简单对类型系统、领域模型在前端开发过程中起到的作用,进行总结与思考。

前端面临的挑战

首先要讲讲前端面临的哪些挑战,导致我们必须去思考借助领域模型来降低前端开发中的复杂度。

在现代前端十几年的发展历程中,前端开发人员的定位通常以还原交互视觉、提供视图组件解决方案为主,而后端则通常以业务模型、领域模型等作为自己的聚焦核心。前后端之间以 HTTP 或者 Apache Thrift 这些 RPC 技术进行数据通信,相互之间通常不存在很强的静态代码层面的数据结构约束。

但是渐渐的,业务模型越来越复杂,后端的 Model 越发庞大。前端开发者会发现,如果对于后端接口返回的 Model 没有业务上的理解,那么对整个系统进行迭代、重构甚至简单维护,都寸步难行。

软件系统在经历数量级的巨大变化之后,原有的解决方案通常不堪重负。前端必须有个单独的层来对接后端复杂度的巨大变化。

每个开发人员在进入一个新团队时,一般都会给自己设定较为充足的时间来“了解、熟悉业务”,熟悉了业务之后,开发速度也会明显加快。这个业务,本质上是知识,是概念与逻辑的集合,理论上,也是可以用数据结构来描述的。

我所理解的前端需要的领域模型,就是要找到合适的方法来描述解决这几个基本问题:

  • 前端开发人员看到的每个字段、属性,是什么
  • 业务系统中每个模型、对象,有什么方法/逻辑
  • 模型与模型直接的关系,是什么

阶段1:良好的注释与文档

阶段2:面向对象

阶段3:TypeScript

TypeScript 给前端开发人员提供了编码阶段降低代码复杂度、提升代码可读性的极佳解决方案,主要就是因为提供了完备的类型系统。

此外,TS 的强制类型检查,也能帮助开发者在编码阶段提前规避很多问题,例如类型错误、参数个数错误等。

Share

Goodbye, 2020

又到了总结一年的方方面面的时候了。2020 年真是魔幻的一年。下面就是今年的总结啦。

PS:这份总结从 12.19 开始写,陆陆续续补充,一直写到了 12.31。以后想到什么了可能也会补充进来。

Read More

Share

回京工作五年啦

Catalogue

总而言之,在北京工作整整 5 年啦。

Share