我与前端
“能说说为什么学习前端吗,背景和动机是什么?”
这个问题是我最近一个月最多被问到的一个问题。
仔细想想,自己已经接触前端 2 年了,正正好好两年。两年前的现在,我还是个大一的学生,和大部分人一样,年轻有迷茫。看不到未来的路在何方。在此之前,我学了一段时间 Python 网络爬虫,做过几个脚本。一个偶然的机会,认识了 @Paul,通过交流之后,了解到他也是自学的前端。他有一个自己独立开发的个人空间,那个时候我想着我以后也要自己做一个那样的站点。那个时候,通过写博客,认识到了很多人,一起做独立博客的人。要知道,在当下,自媒体公众号已布天盖地,而真正通过写独立博客的人已经很少了。
刚步入一个新领域的时候,多多少少是困难的,尤其是自学。大部分人可能会跟着某个视频教程学习。而我却不是,我是通过直接修改别人做的比较优秀的主题来学习的。我承认我大多数在乱改,但是更多也是从中学习到了什么。那时候我边学习基础知识,边改主题,也就是实践。想要达到一个预期,也需要通过搜索引擎去认知一些更深入的知识。所以那个时候,我并没有从基础开始学,那样太慢了,也会感觉到很枯燥,而我又是一直都是通过兴趣驱动型的。我一直认为只有兴趣的驱动,才能学得更快,学的进去。也正是因为这样,那段时间我过得很快乐,每天都在学习和做自己的项目,那段时间我移植、修改了多个 Typecho 的主题。也是那段时间,我爱上了开源。受 Phodal 的影响,最后也完成 GitHub 百天连击。(那些黑历史在 GitHub 仍能找到
那年暑假,我正式开始了前端工程化项目的学习。前端工程化的入口点是比较难找的,从纯原生到框架的跳跃。需要接触到前端一系列工具链,以及对整个目录结构的认识,模块化的拆分。而那段学习的过程,我是通过 B 站的全栈之巅发布的视频学习的。这是一位非常优秀的 UP 主,视频也十分优质,但是关注的人有点少。我向后入门了 Vue 2,以及 Express、NestJS。学习的过程不是一味的照搬照抄,一味的跟着教程去做是没有什么收获的。最重要的是举一反三。师傅只会带你入门,修行还是得靠个人。之后,我便开始独立实践,开始做一个新的项目。而这就是我的初心,做一个个人空间,我想我是时候可以去完成它了。
独立开发是一个比较困难的事情,遇到问题不知道应该去问谁。除了通读官网的文档,有时还是不能解决问题,多上 Stack Overflow 看看,原来还是有一些 trick 的方法。其次是项目的结构,前期的架构不当,会导致后续维护的火葬场。也是因为这样,第一代空间没上线就腹死胎中了。而现在的版本则是学习参考了他人的项目结构上作成的。虽然到了现在还是比较杂乱的,对于后续维护来说不是一件友好的事情。最主要的原因还是最初没有罗列一个大纲。单元测试在重构过程中十分重要,但是我至今不会编写用例,找不到一个切入口。
那年下半,我一直都在和 Vue 2 打交道,写了很长多的练手 demo。就是这样一个没有任何实战经验的小白,阴差阳错的进了一家公司实习。对于没有 React 经验的我来说,无疑是一种挑战。但是那是一个非常好的机会,我没有错过。这就是我,不管自己行不行,我都去试一试了,需要自己把握机会。我周围有这样一些人,也有正在学习前端的人,当你伸出援手,拉他做一些项目,并且愿意去带他,而他却会回绝并称自己能力不够。是啊,既然你能力不够,为什么又不去珍惜这些机会呢。换做是我,我一定会接受。毕竟在此之前,我多么希望也有人说,嘿,一起做项目?
学习一个新的框架需要多久。何为学习,何为学会。如果是会使用一个框架,那么可能从零到会只需要一天。而我那时学习 React 也就一天。我学会了吗,不,我只是会用了。学习是个漫长的过程,至今我仍不敢确切的说我学会了 React。React 是一个十分优秀的框架,按官方的说法,它称不上框架,而只是一个库(Library),相比 Vue 2 来说,他没有 Router、没有 Store。所以他的生态也出现了好多同类别的不同的选择。React JSX 的写法更加友善,相比之下我慢慢地转向 React,之后的一年直到现在,我都已 React 为主要技术栈。React JSX 的写法一直刻在我心里,我想着哪天 Vue 也能和 React 平起平坐,毕竟它也是我第一个接触的框架。Vue 3 的到来让我看到了曙光,这简直是 React Hooks 的翻版,但是经过多次的使用之后,对于生态上还是有点失落。很多库从 Vue 2 迁移过来,对 TypeScript 支持度差,JSX 的写法实在糟心。官方对于 JSX 的写法也没有明确说明。(毕竟官方一直推崇的是 Template 写法,在 Compile 阶段静态优化,让 Runtime diff 上更加快速。但是我还是喜欢 JSX 的写法)
对 TypeScript 的了解在那时候也酝酿很久了。一直想找个机会使用它。正巧,接到了一个外包,他的后端字段非常的乱,如果使用 JavaScript 的话,对后端数据的处理上比较难,难在所有的 Type 都是 any(指 JSON parse 之后)。我使用了 JSON2TS 工具把 JSON 的 interface 转出,这样就比较好写了。然后又学习到了 Vue 下的 TS 写法,以及 Vue Class Components 等等。
之后的故事都在往期文章中可以看到,就先不写了。可以从这里开始阅读:
最后
可以从往期回忆中了解更多: