Zong
一步一步向前走

「2017 年中秋,摄于日本东京台场」
时间来到了国庆,今年国庆和中秋可是一起的噢。想去日本旅游~

📔 日本語学習計画

截至目前《新版 中日交流标准日本语 初级上、下》完成第 9 单元学习。加油!

📚 建立自己的前端知识体系

1. 计算机图形学

截止目前学习进度至:「材质与外观」 学习进度停滞

简单尝试了 Three.js 做鼠标跟随。

2. 可视化团队

9 月是参与可视化团队的第二个月,工作当然是比上个月更忙了,简单介绍一下这个月的工作内容,负责以下内容:

  • 平台整体代码重构工作:
    1. 脚手架迁移更新
    2. 全面采用 TypeScript 开发
    3. 平台运行时逻辑优化
    4. 核心逻辑单元测试
  • 等等其他支持

脚手架迁移是一个新的尝试,从 Vue CLI 2 构建的项目迁移至 Vue CLI 4 进行构建,并同时将语言由 JavaScript 切换至 TypeScript 。我非常喜欢的工作内容,也是我在今年想做的一件事情,非常开心,很有动力。

在代码迁移过程中,你会发现旧代码中 Lint 规则很多都是过时且不好的,虽然很多可以使用 --fix 进行修复,但是还是有很多代码需要手动修复,也就从这一点也发现了很多的不明显的 BUG 和多余的文件。

在脚手架迁移的过程中,学习 Webpack chain 的使用方式,在同事的帮助下节省了不少学习成本,从一开始的抵触,到慢慢的接受,再到现在的习惯,回顾起来其实还是很清晰方便的。真香!

当然了,由于一些依赖的升级,旧依赖没必要在新的环境中使用,也遇到了一些问题。比如 PostCSS 的使用问题,此次我才知道原来 plugin 是有顺序的,是线性执行的,也移除了一些旧的插件,使用 precss 来代替,非常的方便。

在迁移完脚手架和 TypeScript 后,联系后端进行 CI/CD 的 TS 分支自动化部署测试,也相当的顺利,对 CI/CD 也有了更多的学习和认识,对 Docker 也有了些兴趣~

在优化平台运行时逻辑时,需要充分为单元测试做考虑,比如我做了如下的优化手段,抽离挂载在 Vue.prototype 上的公共方法,将使用模块化的形式使用,这样的优点是更适合做单元测试,让函数更纯粹。

对原有的 mixins 进行抽离,放弃使用这个危险的功能。由于目前还暂时不敢使用 Vue 3.0 版本,基于 Vue 2.0 我决定使用 @vue/composition-api 来代替 mixins ,这样的做的优点是不仅可以抽离出公共的逻辑,并且利于做单元测试,让逻辑更清晰。并且提前使用 @vue/composition-api 会让未来在迁移到 Vue 3.0 的过程变得轻松。

当然还对 Vuex 做了类型约束,约束方式则参考「 Vuex + TypeScript 」,一个很不错的类型约束写法,由于目前使用的 Vuex 还是 3.x 版本,暂时未升级到 4.0 版本以上,所以在 Vue 文件中使用类型约束暂时还不行,需要后续再做尝试了……

噢,对了。在迁移 watch 钩子的时候才从同事这里得知 Vue 2.x 中是有一个 sync 参数的,查阅资料发现在 Vue 3.0 是给开发者提供了文档说明,但是在 Vue 2.x 似乎没有,使用 @vue/composition-api 可以使用 flush: 'sync' 来使用,但是使用 vue-property-decorator@Watch 装饰器时却无法使用,查看源码发现就不支持,于是自己内部重新构建了一个支持 sync@Watch 装饰器使用,并且给该仓库提了一个 PR#346

截止国庆,重构的工作并没有完成,单元测试目前覆盖率仅 5 % ,平台运行时的逻辑优化也没有开始做,计划将运行时写的更优雅,使用类似于 React 事务的模式去合理的规划平台的运行时,让平台运行的更可控,加油,挑战设计模式!

3. 文章推荐

🏇 锻炼身体

重新开始恢复锻炼,感觉出出汗还是挺舒服的,当然也是防止肥胖。啊~肥胖,远离你!

新的规划

也慢慢感觉到了自己想在新的一年的目标和规划:

  • 扎实前端相关知识基础(比较宽泛,需要罗列细节)
  • 更多的以产品经理角度思考问题,发现问题
  • 更多的以项目经理去沟通,学习沟通,锻炼沟通能力
  • 领域的深耕似乎还是迷茫,多去做尝试和选择