小前端 2019 年的思考总结 | 掘金年度征文

1,925 阅读12分钟

自我介绍

首先依照国际惯例来个自我介绍,我叫 season,计算机专业毕业,参加工作三年,一直同一家公司做前端。来掘金两年了,刚开始的时候觉得这平台不错,文章质量过硬,而且人气很高;经常在搜索引擎搜素不到的知识点,在掘金能够找到对应的博客。

再来讲讲我的工作,作为一个前端,我的技术栈是 vue、css3 、canvas、webgl 以及小程序。

2019 年成长之路

2019 年对于整个互联网行业来说是十分坎坷的一年,从年头开始整个行业就被各种的倒闭、欠薪以及裁员等负面消息所笼盖,被称之为互联网寒冬。

作为一名小前端,为了不被寒冬冻僵,2019 年我在努力地为自己穿上防寒外套。做了下面三个方面进行了学习和研究:

小程序(主要针对微信小程序)

虽然小程序已经正式推出一年多快两年了,但是在刚刚推出的那一段时间很多功能受到了限制并且不支持个人注册小程序,我没办法进行系统地学习。然而到了 2019 年,经过几次大更新之后,小程序已经相当成熟,我也顺应潮流地学习了一波。

在比较系统地学习以及实战过后,我做了一个自己用的小程序(类似备忘录)。做完不久恰好接到了小程序方面的任务,功能是预约签到,让我再次得到了练习巩固小程序开发的机会。这里大概说一下我开发期间的感受:

优点

先说一下开发期间让我觉得十分棒的几个点:

  1. 前有前端工程化,现有小程序工程化,相比于原生开发,开发效率以及代码结构都有所提高和改善。我做的两个小程序分别用了现在人气最高的 taro 以及 uniapp,都是十分优秀的框架,区别在于 taro 用的是 react 语法,而 uniapp 用的是 vue 语法。个人认为,如果像我一样熟悉 vue 的小伙伴,不用犹豫,直接用 uniapp。
  2. 小程序 api 极其丰富,基本上 app 能够实现的功能,只要满足要求小程序基本上都可以搞定。
  3. 如果定制化程度十分高的小程序,Uniapp 和 Taro 都有一些默认模板和别人开发好的模板下载,开发起来十分方便快捷。即使是定制化,api 也十分丰富,无论是页面还是功能都能够满足大部分需求。
  4. 开发期间提供了几个版本让开发人员测试(开发版、体验版、正式版),还能够在开发工具上面进行真机调试,对于开发人员来说是真的香得不行。

不足

当然有好的地方就肯定就有不那么完美的几个方面:

  1. 小程序后台很多操作需要管理员扫码才能操作,如果是个人开发者问题不大;但是如果是公司项目或者外包形式,很多时候管理员不一定是开发人员,也许是客户。这点在开发过程中还是有一点麻烦的,不过考虑到安全性的问题,还是有必要这样设置,希望后面有设置多个管理员的功能。
  2. 虽然现在已经出现了很多在小程序中加载 npm 包的方案,但是总体来说还是没有太方便快捷的解决方案。而现在很多前端用到的库都是在 npm 上面下载,这样导致当开发者想在小程序中用某些库或者插件的时候,局限性十分大,甚至需要自己重新开发一个库来满足小程序需求。

总体来说,目前小程序已经趋于稳定,社区也在逐渐壮大,已经出现了大量针对小程序的开发岗位,个人认为是小程序已经成为每一个前端开发者都有必要去学习跟掌握的技能之一了。

Typescript

相较于小程序在国内的热度,typescript 更多是在国外大面积地流行起来。我刚开始了解到 typescript 其实是听说 angular 全面使用 typescript 的时候,不过后来因为不使用 angular 所以没有去进行学习。

而在 19 年年初的时候,各大公众号和平台发布 19 年值得学习的技术博文,我注意到每个博文基本上都会提到 typescript 将会大火。于是乎,满怀好奇心的我开始踏入了 ts 的大坑。

学习 ts 的道路真的十分曲折,曲折并不是在于 ts 很难,而是在于很难运用到实际项目中,并推广使用。

  • 最开始我打算自己做一个小的 ts 项目来学习,后面我真的做了而且不止一个。但做完之后我发现,小项目用 ts 其实没有用到多少 ts 的知识,最基础的类型估计都没用上几个。
  • 于是乎,我想用一些需要使用 ts 来开发的框架学习,看看能不能从中更加系统学习 ts。搜素了很多框架之后,发现 react 对于 ts 的支持十分好,CRA 以及有基于 ts 的脚手架版本了,我开始尝试学习 react 并且尝试在 react 中使用 ts。
  • 可是用什么框架其实不重要,问题是没有项目,而且是业余时间做项目学习时间十分有限。于是我调整了一下学习的策略,想在公司的项目中使用 ts,并且尝试推广给其他同事使用。
  • 而在公司使用涉及到很多问题,包括如何把旧项目改造成 ts 版本、重新搭建 ts 的开发环境等等,暂时依旧处于实验阶段。

经历了这么一大轮的学习,我开始对 ts 有一定程度的了解,我总结了 ts 使用中的几个坑:

  • Ts 十分优秀,但不是所有的项目都适合使用 ts。个人认为大型的项目、插件或者库比较适合使用 ts,而如果是中小型项目(特别是以前不是用 ts 写的)就不太适合使用 ts了。
  • 尽管现在流行的库都已经支持 ts 的版本(一般是 @type/XXX 的形式),但是仍然有相当一部分的库不支持 ts。所以如果项目中有用到某些库,但是该库暂时没有 ts 版本的话,那就需要斟酌一下到底 ts 是否合适当前项目。
  • ts 的一大特点是类型检验,然而 ts 却又有一个 any 的类型。强烈建议如果用 ts,就尽量不要用 any 了,不然用了也没有意义。

整体而言,ts 是一个十分优秀的 javascript 超集,在我用了 ts 进行开发尝试的一些项目中,我能感觉到代码结构比以前规范了许多。熟悉了语法跟类型之后,写起来跟 js 没有多大区别,只是需要花点时间去定义类型。在 vue 3.0 使用 ts 进行开发之后,三大框架都已经使用了 ts ,相信在不久的将来,前端项目都会使用 ts 来编写。

软考

软考其实不是我在 19 年初定下的计划,是下半年同事们都去报名也把我拉上了。先简单介绍一下软考到底是考些什么以及考完有什么好处?

软考其实是几年前的软件考试,是国家级别的一场考试,每年会在 5 月底以及 11 月中举行。软考中有高中初三个级别,每个级别都有不同的资格证书可以考。三个级别中,初级比较基础含金量不太高,高级需要写论文比较难。一般参加考试的考生都会从中级开始考。

我考的是中级软件设计师,考试分为上午跟下午:

  • 上午是 75 道选择题,每题 1 分,要拿到至少 45 分(就是 100 分的 60 分)。
  • 下午是 6 道填空题(也可以算是问答题),最后一题是需要选择用 c++ 或者 java 回答就行。相当于只需要做 5 题,每题 15 分也是 75 分,45 分及格。

通过考试之后,能够拿到国家颁发的软考证书,暂时来说是永久的。在一些公司和企业入职的时候如果有这个证书,会加点分;甚至在一些公司和企业会有奖励的措施。

需要上下午都拿到至少 45 分才算通过考试。

在 9 月初我刚报名,了解到上面这些基本的考试信息之后,其实我并没有觉得这考试有多难。作为一个计算机毕业,并且工作了三年的 IT 人来说,难道软考及格都做不到吗?

然而,当我看到软件设计师考点的时候,内心还是产生了波动。难点主要在于考点实在太多,而且在从事计算机方面工作并不意味着你就能够了解到这么多的知识点,也许工作中只是用到了里面的其中一到两个。软件设计师的考点主要有下面几个:

  1. 面向对象程序设计:考的是 UML 图(类图、对象图等等),上下午都会考占分比重最大,简单理解为弄不懂几乎是过不了。
  2. 算法分析:顾名思义考的是算法,像背包问题这种。占分也不低,特别是下午会有专门的一题。
  3. 计算机基本原理:考计算机各种的基本结构,难度不大,但是知识点太多,容易头晕。
  4. 树和数据结构:大学里面二叉树和队列那些,难度也不大,但是每次出题都是捆绑 2 - 4 分,一旦不会马上丢几分。
  5. 专业英语:虽然跟计算机没什么关系,但是每次考试固定 5 分,总不能先让 5 分吧!

简单概括一下我的备考过程就是:刷题!

从 9 月份报考后,我有两个月的时间备考,9 - 10 月其实还处于懵懂无知的状态。因为想还有大把时间不急,但是到了国庆,剩下一个月就开始紧张了。

上午题

我主要备考上午题方式就是下载一个软考的 app,然后每天业余时间就在疯狂地刷题。这个 app 也是比较良心,把题目分了知识点,我就是按照知识点一个个去做;而且大的知识点在前面,而小的知识点会在后面。这样即使到了后面,没有完全看完所有知识点,也离及格不远了。

由于上午题都是选择题,所以有很多题目能够用排除法、代入法等等的技巧来答题,所以有些时候还能蒙对,并不需要每个知识点都融会贯通。

下午题

上午题刷得差不多之后,就要开始看下午题,下午题跟上午题知识点上面其实是有联系的。前三题都是看图回答问题(数据流图、实例图、对象图),就是面向对象程序设计的知识点,只是每次的场景不一样,掌握一点答题技巧,15 分拿个 8 - 10 分问题不大。

后面两题是算法题,而且是需要写代码;第四题是写 C 代码,第五第六是题目一样可以用 java 或者 C++ 来回答 。这个时候就比较看运气了,如果遇到的算法自己比较熟悉,那么一般能够答对 3 个空(一共才 5 个空),那就是 9 分了;但是如果不熟悉得话,那有可能会一个空都答不上。

如果真的运气这么不好,两道算法题都答不上,那么就 30 分没了,除非前面三题全对,不然这次考试就 gg 了。

这次软考的经历,如果说对于工作有什么大的帮助,个人觉得也就那样,比较像当年考英语四六级刷题的感觉。不过做完题之后,会感觉到很多基础知识自己真的是不知道,像 ip 之类的。下半年的考试,花了将近2个月的时间准备,分数暂时还没有出,希望能过!

2020 展望

回看 2019 年,看起来好像没有做什么东西一年就这样过去了。但其实回想这一年的学习,大部分时间都处于踩坑和填坑的阶段,特别是 ts 国内的教程比较少,一时间比较难以找到学习方向。能够完完整整地过了一遍小程序开发,也算给自己一点小鼓励。

2020 计划:

  1. 继续坚持学习使用 ts,争取全面使用 ts 进行日常项目开发。
  2. 奔向全栈,学习了解后端开发知识。
  3. 开始学习一项码代码以外地技能,不能被寒冬冻僵。
  4. 坚持锻炼,再胖下去要出事情了!

大家一起努力学习啰!