大家好,我是 辉夜真是太可爱啦 。本文主要讲述本人选择从事前端开发以及从业前端开发的心路历程,顺带描述一下我个人对于前端开发知识脉络的一些看法。本文仅仅是抛砖引玉,更细致的前端学习路线我打算下一期再写。
为什么我会选择前端
我本人是因为比较喜欢打游戏,在选择专业的时候,选择了计算机行业。当时想的是,要是自己能开发一款游戏,或者是做一款外挂,那应该得有多酷啊,带着这种想法,我毅然决然地选择了计算机行业。
记得当初入门性地学习了 C 语言和 Java 。才发现,就连实现一个简单的日历,都让我头皮发麻。脑子里想起当初的豪云壮志,还想着开发一个外挂软件,简直是如步登天。
说实话,当时也比较迷茫,感觉 C 语言和 Java 有点枯燥,外加有点难。感觉人生已经芭比Q啦。
再后来,接触到了网页开发的课程,当时还没有动态页面的概念,仅仅是学习了静态网页,就被网页开发所吸引住了,那个时候就以为 HTML + CSS 就是网页的全部。
因为网页开发是属于所见即所得的,你在键盘上敲击的代码,一运行,就能看到在浏览器中所展示的效果,并不像 JAVA 那样简陋的控制台打印输出。
再后来接触了 Javascript ,发现了它的强大,不仅能控制 DOM , 还能控制 CSS 。
PS : 以前的我也根本没有前端和后端的概念。
网页三剑客
至此,网页三剑客的格局打开:
HTML 控制页面的结构
CSS 控制页面的样式美化
JS 控制页面的行为,用户的鼠标点击,页面滚动等
动态页面
但是,仅仅有一张静态页面是远远不够的,在后面的学习中,有学到了 JSP 这个概念,才知道了如何做一个动态的网页,但是它又将我的网站与 JAVA 串联在了一起,我顿时又感觉有点脑壳疼,流下了痛苦的泪水。
只觉得此生和页面开发是无望了,是我不配。
转折点
真正的转折点是大三的下学期开始,我感觉不能再这样子碌碌无为了,总不可能毕业转行吧,转行我也不知道应该干什么呀。
想着既然对网页开发最感兴趣,不如先熟悉下吧,就自己去了 w3school 上将 HTML , CSS , JS 的文档都看了个遍,还有后面的 Bootstarp , 当时使用的编辑器我也记得很清楚,还是 Dreamweaver ,这名字说实话,还是起的有点东西的。
然后由于 JS 我感觉光看教程还是不太够,就去网易云课堂看了智能社的 JavaScript-从入门到精通
看完之后感觉课程的老师讲的真的很好,讲得很清晰,也了解到了 AJAX ,感觉到了可以避开 JSP 的曙光。同时,也更加燃起了我学习的信心和动力。
再后来,去图书馆借了两本书,书名我已经大致忘记了,反正主要学到了响应式布局以及 Bootstrap 以及 flexbox , filter 滤镜 , transform , transition , media 媒体查询 , animation 等 CSS3 的新特性,了解到了之前一直没有意识到的问题,那就是关于页面适配性的问题。一个好的页面应该能在所有的环境下打开,并且高保真还原。
同时,我也被动画的效果所深深吸引,我觉得,做网页开发,写特效是一件很酷的事情,这不比学 JAVA 那种枯燥的事情有意思多了。我也在心底更加坚定了我的想法,既然开发不出游戏和外挂,那我做一个写网站的人,虽然和我之前想的偏差很大,但是,再怎么样,我觉得我所读的专业没有浪费,不然我会觉得我学了那么多,最后毛用都没,直接转行,那不是血亏。
实习
在大四临近实习的时候,我在同学的推荐下,也和他去了一家互联网公司,做起了开发。
在实习的时候,接触到了 Vue , ES6 , Stylus , Git , 前端UI框架等概念。
再往外一层,就是了解了前后端的概念。一个完整的项目,就应该是前后端配合出来的。
前端负责完成 UI设计图的实现,并且整理用户的输入和行为,将有必要和后台交互的数据进行整理,发送给后端,并且,将后端拉取过来的数据,铺在页面上,这就是前端的职责。
后端负责接收前端发来的数据,做出相应的数据处理并且将数据存放于数据库,亦或者是根据前端发来的请求,将数据整理好发送给前端。
也正是那个时候,我才知道,我的这个岗位,应该是叫前端开发。
由于公司用的技术栈是 Nuxt ,所以我又去图书馆借了一本 Vue 的书,那本书我记的很清楚,是 iview 的作者 Aresn 写的 《Vue.js实战》 。
一边看书,顺带结合着 Vue.js官网 ,一边自己敲代码,在同学的指导下,安装了 webstorm ,根据书的学习之后,了解到了组件 , 脚手架 , vue-router 路由 , vuex 全局状态共享 , axios 前后端交互等概念。
然后看阮一峰的 ES6 入门教程 ,学习了 ES6 的相关知识。
进阶
在实习结束之后,我选择了回杭州发展,当时是简历写的也一般,面试现在来看也很呆瓜,一问一答的那种,但也无可避免,毕竟是应届生,楞头小青年的感觉,最后虽然也是找了个实业公司,但是论体量,也算是个不小的公司了。
好在同事也都人还不错,当时还没有开始玩掘金,玩的是简书,在上班的空余以及下班之后的空余时间,会偶尔逛逛简书学习,再后来,在同学的推荐下开始刷起了掘金,做一个潜水用户。
当时的感觉是,简书的氛围是更偏向于解决实际开发问题的那种问答,而掘金是更偏向于学术性的,将一个知识点抛开来讲。
在看了不久之后,我就更加偏向于掘金了,感觉掘金的文章质量,普遍更高一些。
由于当时有一个项目是我负责构建的,我选择了最新的脚手架构建,当时是需要自己新建 vue.config.js 然后进行 webpack 配置的,我百度翻阅了很多优化方法,然后加到了自己的项目中,并且写了我掘金发表的第一篇博客 Vue2.6.10(Vue-cli4)项目打包性能优化实践 ,结果还收获了四五十的点赞,对于当时的我来说,已经算很多点赞了,让我感觉收获了不小的成就感,尤其是当别人在看了你的文章之后,表示对他们有帮助,并对你的文章给予肯定的时候,也会让你有更加大的动力更文。
在那之后,也便一发不可收拾,后面又写了 《一文搞懂JS系列》 , 《浏览器渲染过程系列》 , 《搞懂 Vue 响应式源码系列》,在撰写文章的同时,让自己加深对于这些知识点的印象。
我感觉写博客真的是一种很好的学习方式,因为当你不仅能自己了解这个知识点,并且,能将这个知识点清楚地表达给别人的时候,我觉得也更是一种能力,面试的时候,其实也是一种将自己对于该知识点的理解,更加通俗易懂地表达给面试官,而且,写博客,同样是在简历中能够脱颖而出的一个亮点,前提是点赞多或者写的文章很有自己的见地。
也正是因为这些积累,在今年,我也毅然选择裸辞,面试的结果也还是比较满意的。
当然,除了上面说的这些:
然后掘金也有很多小册我也蛮喜欢的,我个人也买了不少的小册
这几本中,我最最最推荐的就是 Vue.js组件精讲 ,在看完这本小册之后,我也自己着手在项目中加深了自己的组件封装深度,也学习了 v-model 的封装方式,并撰写了相关的博客。
PS : 至于为什么你说我才学习进度 21% ,只能说之前看的时候,还没有进度统计,这21%也是我二次阅读的进度。
当然,别的小册也很不错,在上班摸鱼的期间看看小册,自己学习也是极好的。
前端知识脉络
而且,上面也有很多知识点,我也没有提及,因为前端的知识脉络实在是太广了,然而,每一个知识点,单拎出来都是一个很庞大的知识点。我也在这里描述一下关于我眼中的前端知识脉络。
前端基础
首先,前端的三剑客就是前端的基础, HTML5 + CSS3 + JS。
他们分别控制页面的结构,样式以及行为。
ECMAscript
由 ECMA 组织构建的 ECMAscript,我们将之称为 ES6 ,现在不出意外已经到 ES11 了。
我推荐看 阮一峰的教程,最新的特性自行百度查阅即可。
jQuery(现在可以选择不学)
在之前风潮一时,不会 jQuery 就可以说你不会前端,但现在已经被前端的三大框架拍打在沙滩上了,但是在前端,仍然是有蛮大地位的,对于现在入门的前端, jQuery 不会也可以。
前端三大框架(至少得会一个,但一个也够用了)
现在风靡一时的前端三大框架, Vue.js , React.js , Angular.js 。三大框架又有自己的全家桶。
本文仅仅拿 Vue 来举例,现在的大环境不是 Vue 就是 React ,不建议学习 Angular ,毕竟市场环境比较小众,找工作相比于前两者不好找啊。
它有 vue-router 路由管理, vuex 全局状态管理, axios http请求工具 。
同时,我也最推荐 Vue.js 对于新手是最友好的。
脚手架构建工具
此处仅以 Vue 方向举例。
UI框架
此处仅以 Vue 方向举例。
PC端: element-ui , ant design , iview
移动端: vant
Typescript
Javascript的超集,JS 有的 TS 都有,但 TS 是现在的趋势,越来越多的团队,选择在项目中使用 TS 。
项目打包工具
主要是学习 webpack 即可。
代码优化
代码优化层面,主要分为格式以及代码质量
格式主要是 Eslint , Prettier 。
代码质量主要是设计模式,算法优化等方面。
大屏看板
百度公司出的图表工具 Echarts
蚂蚁金服出的图表工具 antV
3D可视化方向
Three.js 是基于 webGL 开发的框架
地图工具
Git
Git 是必不可少的,这个必须要会,要搞懂本地仓库,远程仓库,以及多分支等概念。
Git的代码提交规范以及分支规范,也是蛮重要的。
一般使用 Git 小乌龟 即可,没必要都手搓代码。
文档构建工具
当你给团队构建公共组件库的时候,写一个清晰明了的 API 文档也是必不可少的。
两者仅仅是构建工具上的区别,更推荐使用 vitePress ,毕竟启动速度快。
小程序、APP或桌面客户端
额外知识
作为前端开发,关于 HTTP协议 TCP/UDP协议,还有网络安全, XSS CSRF 也都应该有所了解。