韶光不负,创作不断,本文正在参与2022年中总结征文大赛
上一年初,我从 Shopee 离任加入了腾讯文档前端团队,其时也是奔着大名鼎鼎的 AlloyTeam 去的。
本来最初的目标是去找一份做跨端开发或许 NodeJS 开发的工作,但还是被其时的组长以 “咱们是华南地区最强前端技能团队之一” 给引诱了。
思来想去,在线文档确实是前端天花板项目了,再加上是闻名技能团队,觉得比较靠谱。
中心竞争力
其时对自己的实力还是有自信的,我觉得自己看源码速度很快,刷过各种库的源码,懂各种原理,还在慕课网写过一本教程。
曾经做过移动端开发,也做过办理系统,也做过 NodeJS、CI 等等,涉及到的技能栈许多,但都短少深度,仅仅多而杂。这儿的深度并非指读源码,而是在某一个范畴有十分深的造诣。
其实做一百个页面和十个页面其实没有本质区别,来一个应届生相同能够做,那为什么还需求我呢?
所以在从 Shopee 离任的时分,我一向在考虑,自己的中心竞争力在哪里呢?
基于对这些的考虑,加上其时现已快四年经验了,内心也是比较焦虑的。依照其时的水平,假如去面阿里,必定是到不了 P7 的。实际上去面了一圈,尽管大厂 offer 都拿了,但职级便是上不去。
其时的想法是,必定要好好选一个靠谱的前端团队,挑选一个范畴多耕耘几年。
腾讯文档
刚入职的时分,比较能够感受到腾讯文档浓厚的技能气氛。这边是我待过最大的前端技能团队(一百多号人),许多业界的技能大牛都在这边。
其时形象比较深刻的 Code Review 和单元测试。因为其时在搞 EPC(尽管争议很大),所以要求十分严格,经常一条 MR 被提20多条问题。每周会有一天时刻留给写单元测试,对代码质量要求很高。
文档不同于传统 Web 项目,全体的复杂度很高,更像是自己造了一个浏览器排版+烘托引擎,需求坚持不断地学习。
以下面这个为例,假如咱们要在文档里边烘托这么一句话,要怎么去处理呢?
在传统的 HTML + CSS 里边,只需求在文本外设置一个 Div,设置一下换行战略就好了,浏览器会帮你去处理要在哪里换行?要不要加省略号…?
但在 Canvas 里边,这些都需求咱们自己去算。最简单的方法便是对这串文本进行二分法,每次用 measureText 来测宽度,不断地去二分,最终找到了原来需求在”的”和”在”之间换行,需求在”编辑”后边加上省略号。
但这样也会有问题,比方我二分测量了十次,那”腾讯文档”这四个字宽度也被测量了10次,假如文档内容比较多,全体排版耗时不就显著增加了吗?
更好的方法便是对这句话做分词,依照必定的规则将一句话拆成多个词,对词宽度进行测量,将测量后的宽度缓存起来,因为文档里边大都是重复的文字,所以这样能够避免很大的重复测量。
那这儿也要留意一下,为什么要分词呢?直接测独自的文字宽度不行?确实是不行,尤其是英文里边,不同的字母的 kerning(距离)是不相同的,直接测单个字母宽度累加是不准的。
除了这个,遇到 emoji 的场景又要如何处理呢?尤其是 这种 length 大于1的 emoji。日文韩文泰文等又怎么处理呢?
这仅仅工作中遇到的一个场景,但也现已表现了文档事务的复杂性。
智能表格
试用期转正后,其时有两条路能够挑选,一个是持续留在 Word 组做底层的 ooxml 数据升级,另一个是去近邻组做智能表格新项目。
其时考虑了一下,自己对文档完全零根底,试用期也一向在做一些杂活,持续留在 Word 也会比较难,决断挑选了去做智能表格。
触摸了智能表格之后,才发现这是多么一个立异的产品,尤其合适 B 端用户。一份数据,多种展现形态,本质上是一个在线数据库,是天然的低代码平台。
国外的 Airtable 早就现已火起来了,国内的维格表、飞书多维表格、黑帕云等都想占据这个商场,咱们算是起步比较晚的。
经历了一年的开发,前阵子终于正式对外发布了。
传送门:请新建智能表
Canvas 和功用优化
上一年中之前一向没有触摸过 Canvas,曾经完全没有这方面的经验。
刚去做智能表格的时分,被安排做烘托层,其时觉得充满了挑战,关于未知范畴的技能,我一向是坚持猎奇心的。
趁着做烘托层的这段时刻,先后刷了 Konva、ZRender(echarts)、Antv 这几个库的源码,对 Canvas 各种特性都很快就了解了。现在在 Google 搜 Konva,第一页还能看到我上一年写的文章。
在这期间都在触摸类似上面那个比如相同复杂的场景,简直每天都在考虑如何做功用优化,对着火焰图看是常态了,也经常去咨询团队或许公司内外的一些大佬们,咨询一些优化方案。
在智能表格这段时刻,不只做了烘托层的事务,还做了滚动 FPS 优化,做了服务端烘托,做了首屏异步分片计算,也做了 Canvas 的 Devtool 调试插件。
期间写了一些博客,基本上都上了内网头条。
至今依然觉得 Web 烘托是一个很好的方向,尤其是元世界的炽热,对这方面人才的需求会越来越多。
回校授课
尽管这件事说了许多遍,但关于我来说是一件比较有意义的工作。
上一年有幸成为腾讯文档前端菁英班 Web 前端选修课的讲师(16课时、一学分),全程负责了菁英班的课程制造、现场授课、作业布置和修改、期末查核等等。
再次回到母校的感觉还是有很大的不相同。曾经回到学校后能明显感觉到自己早已不属于这儿了,但这几次回去能感觉到我是学校的一份子,还是以老师的身份回来的。
未来
我是对未知的技能十分猎奇的那种人,永远坚持一颗酷爱技能的心。目前在文档还有很大的空间要走,有许多大牛值得我去学习,也有许多功用需求咱们去完善、优化。