从实习算起,到现在工作了也有一年半的时间了,在这期间,深深感受到了前端领域的飞速发展,在这里记录一下自己的成长历程,算是对知识的一个梳理,也希望帮助到刚入行的同学们。说来惭愧,大学里并没有涉及前端的知识,当时对自己的定位很迷茫,不知道毕业之后何去何从。所以盲目的报了很多学习班,还考了思科认证的网络工程师,虽然没走网络方向,但是这一块的知识在工作后确实对我的帮助很大,毕竟网络是基础。

  那时候,在我的认知里,前端只是写写页面,做做交互,切切图。那时候,我还没听说过什么脚手架,什么构建工具,甚至没听说过ES6。觉得jQuery真的是救世主一样的存在。

  第一天进入公司,心情是完全不一样的,尽管那时候没有小猪佩奇的手表,但也深感自己是个社会人了。

  入职第一天,我被要求先搭开发环境,给了我一个Excel表格,是一个长长的清单,一个一个安装,然后拉取代码,还要执行一大堆的命令,这都是什么鬼东西!完全不知道自己在干什么。就记得一直报错,各种看不懂!不管怎么说,花了整整一天,总算是搞定了!就这样,凭着崴脚的基础就上手了。刚开始看不懂别人写的代码,全凭自己天马行空的想法去做,一行行流水账似的代码写的我开始怀疑人生。

  直到有一天,leader看了我写的一坨代码之后,点了点头,然后选中,删除。紧接着,画了一个下划线,又点了个小数点,后面还跟了个单词,寥寥几句,代码居然还能正常跑通!我勒个去!代码原来还能这么写!从此开始,我认识了Underscorelodash。在没有使用ES6的时候,这个库真的是万能工具箱,操作起数据来得心应手,只要把数据结构整明白,剩下的都是一句话的事。那时候,真的是喜欢上了操作数据的过程。但是目前看来,babel的引入,代码里开始支持ES6、7的语法,很多Underscore中的高频函数都被原生实现了,为了缩减代码体积,这样的类库在逐渐淡出人们的视线。说道这里,必须要提一提阮一峰老师的《ES6入门教程》了,不仅详细介绍了语法内容,还给出了大量的使用案例和技巧,可以说是一本经典之作了。

  入职不久后,,我接触到了第一个前端框架Angular1.x,基于yeoman脚手架,整合了grunt,那时候才知道了前端还有构建这个概念。相较于grunt晦涩难懂的配置文件,gulp的管道思想似乎更容易让人理解。使用了框架,数据更新后页面自己就变了,也不用再去操作dom。在grunt和各种插件的帮助下,代码还可以边修改,边自动刷新,哇!真的是高效!又一次刷新了我对前端的认识。然后开始恶补框架的知识,各种指令,各种service,让开发过程越来越简单。我们不再需要关注过多诸如事件委托之类的优化,框架都会自己做掉,于是有更多的时间放在了业务本身。Angular1.x是不支持服务端渲染的,也就是说,它对seo不友好,所以当时我们使用jade来渲染需要服务端直出的页面,依稀记得严格的语法缩进搞得我痛不欲生。

  Sassless等的使用,让css变得更强大,配合postcss的使用,我不再关注不同浏览器的差异。在重度依赖bootstrap的时候,栅格布局的出场率总是那么高。后来,我认识了flex,生活仿佛都变得更美好了!

  之后,我们开始使用UI组件来提升效率。UI组件库可以说是遍地开花。在PC端,Element UIAnt Design是比较主流的。实际使用的时候,还是要结合自身业务和使用场景,例如是否需要支持ssr。后来我也使用过一些移动端和小程序的组件库,总结一下,一定要使用长期维护的,issue更新较快的,不然遇到坑会很烦恼,别问我是怎么知道的。

    再后来,我逐渐能胜任更多的任务,开始参与数据可视化这块的开发,于是,我又见到了echartsd3.js。说起d3.js,真的是让我爱恨交加。为了画出我想要的图形,我又找回了已经还给老师的数学知识,每天就像在做数学卷子,似乎又回到了那个高中的时代!还把svgcanvas的基本概念也撸了一遍。张鑫旭老师的svg文章写的很棒,解决了我的许多困惑。

  16年小程序首发的时候,为了探索流量红利,我们也想要抢占这个首发的优势,那时候,我辅助开发小程序,文档看了好几遍,还是理不清小程序的思想。而且由于首发之后,维护的比较少,所以也就再没过多涉猎。今年,小程序突然大规模爆发,我又开始了重新整理小程序的内容,时隔近一年,再次打开文档,原先看了一周都不明白的文档,竟然可以两小时上手了,而且自己又独立开发了一个完整的小程序,或许这就是成长。也有很多小程序的框架涌现出来,比如官方的wepy,美团的mpvue。类vue的思想让开发者的学习成本再次降低。对于最近炒的也挺火的pwa和快应用,个人建议需要用的时候补充即可,没有业务需求自己去实践成长速度是比较慢的,而且容易遗忘。

  17年是Vue辉煌的一年,这一年来,它的生态系统如雨后春笋般的发展。webpack也似乎成了前端er的标配。Vuex借助Flux的思想而设计。它改变了我对状态数据管理的认识。在庞大的应用面前,状态管理变得让人头疼。Vuex集中化的管理可谓是一剂良药!为了支持SEO,我在项目中使用了Nuxt实现了前后端同构。第一次听说同构这个概念还是在17年的全国前端开发者大会上,那时候感觉离自己很遥远。现在回忆,当时会议分享的很多内容都在一年内飞速的发展并逐渐应用起来。所以,多参加一些交流分享会还是很有必要的。

  后来尝试自己去做一些东西的时候,开始涉及到服务端和运维相关的知识,一点一滴去优化每一个环节。逐渐去提升性能。从页面上的小图标开始。不再使用大量的png小图片,而是使用iconfont,减少http请求,而且矢量可以保障显示的清晰度;代码打包压缩合并,自动上传到对象存储,减小服务器压力,并使用cdn进行加速;使用gzip压缩代码减少网络传输量;nginx做反向代理和缓存;pm2守护node进程,保证服务的可用性;使用docker镜像部署服务简化部署流程而且避免环境差异导致的问题等等。总之每个环节都是一门学问。

  个人感觉这一年多来,除了学会了不少新东西,更重要的是学会了如何去学习新知识,如何去发现未知的领域,如何去解决问题。刚开始,遇到问题直接百度或者谷歌关键词,或者stackoverflow找一把,选出高票回答,总能有效的解决问题。但是,很多时候都不知道具体的原因。

  在同事的引导下,我逐渐开始重视文档这个东西。最初我认为他只是写给初学者看的,枯燥乏味。但事实上,文档写明了需要的大部分东西。特别是第三方插件的文档,如果遇上问题解决不了,那就把文档过一遍。还没有解决?那么,再细致地看一遍!还是不行?打开github,去插件的issue里面搜一搜,如果还是不行,再去借助搜索引擎等的帮助。如果源码不复杂,就看看源码怎么写的吧!这是我总结的比较快速定位和解决问题的方式,屡试不爽。在使用现成的插件的时候,尝试猜测代码的实现原理,有条件可以阅读源码,这样会有利于规避错误的的使用方式,也更容易提升自己。所谓错误的使用方式,我这么解释一下吧,如果你发现你的代码变得复杂而又难看,像流水账,那么尝试去换个角度实现它吧,要始终相信代码里有魔法的存在!

  前端这个领域的发展日新月异,不必要精通每个前端框架,而是要理解框架的设计思想,理解他们的差异。而且无论现代前端技术再怎么玩,终归还是要回归到htmlcssjavascript上来。所以,基础知识的牢固就显得尤为重要!

  css是个不怎么听话的孩子,总是会搞出一些奇奇怪怪的事情来!张鑫旭老师十年磨一剑,钻研css的魔法,可见其中技术细节有多复杂。当然,对于大部分开发者来说,可能没那么多时间与精力来投做到这样,但是大部分的基础概念还是要烂熟于心的。javascript嘛,业界经典的两本书(红宝书、犀牛书)选一本啃好了(惭愧惭愧,我还没啃完)!但是对于入门者来说,《head first》系列的可能更适合,一上来就读经典,难免会望而却步。入门的时候还读过《JavaScript DOM编程艺术》,也推荐给初学者。

  设计模式这个东西不算神秘,如果你是一个有追求的人,很可能不知不觉已经在代码里面使用到了,只不过你不认识他而已。比起后端,前端对于设计模式的使用不算太多。多了解一下,可以让你更容易理解大神的代码,而且,自己写的代码也会越来越漂亮。这里安利一把曾探老师写的《JavaScript设计模式与开发实践》。

  数据结构就不多说了,还是推荐一本书吧,《学习javascript数据结构与算法》,这本书很适合入门者,进阶的话,大家给我推荐推荐啦。

  http也是比较重要的一门知识,比如http缓存,缓存的重要性我就不多讲了。之前读过《图解http》这本书,读漫画一样的就下来了,通俗易懂。

  突然间意识到,文章里安利了太多的书籍,有点打广告的嫌疑。各位看官莫见怪,这里列出的都是本人读过而且觉得有帮助的,大家选择性采纳。声明一下,我真不是卖书的!

  我有个习惯,就是每隔一段时间就回去看一波招聘的JD和面经,并不是为了跳槽,而是关注一下最近大家都需要什么样的人才,需要补充自己哪方面的知识。知己知彼,方能百战百胜!平日里还喜欢逛技术论坛,看看大家都在玩啥黑科技。有什么技术沙龙偶尔也去参加一下,得时刻关注技术的发展,学习大厂的解决方案。

  最后感谢那些一路走来给予我帮助的人!

  好了,今天的分享就到这里,欲知更多技术细节,且听下回分解!

一个前端菜鸟的成长历程相关推荐

  1. 一个前端菜鸟的成长记

    一个前端菜鸟的成长记 现在才总结似乎有点晚,但聊胜于无,记录一下我的2016,毕业的第一年,对于人生意义重大的一年. 我的求职之路 打从进入了大四之后,便深深的意识到了就业的压力,并一直在做着迈向社会 ...

  2. 一个计算机高手的成长历程[转]

    一个计算机高手的成长历程 这些日子我一直在写一个实时操作系统内核,已有小成了,等写完我会全部公开,希望能够为国内IT的发展尽自己一份微薄的力量.最近看到很多学生朋友和我当年一样没有方向,所以把我的经历 ...

  3. 上海疫情后一个前端的面试心路历程

    前言 主要记录了笔者在上海疫情后一系列"机遇", 之所以称之为"机遇", 是因为最后结果是好的. 狗血 经历了上海三.四.五月份疫情, 打乱了我好多计划, 如订 ...

  4. 连载《一个程序员的成长历程》-8.步入社会,艰难起航

    百木-ITer职业交流-北京群:141588103 毕业的前半年,我就进入学校这个企业实习了.说是来做软件开发,其实是先从生产部门干起.当时每天给10块钱,一个月220块钱,虽然不多,但是已经很高兴了 ...

  5. 新妈手记:一个新鲜妈妈的成长历程

    原始链接:http://confssogan.blogdriver.com/confssogan/1164555.html 第一篇   准备怀孕 其实没准备这么早要的,都是受到同事影响! 怀孕前正好赶 ...

  6. 记录一个IT菜鸟的成长之路。

    会 的 真 的 会 的 所 有 离 开 的 人 都 信 誓 旦 旦 地 说 过 他 们 不 会 忘 记 曾 经 的 一 切 可 是 最 后 都 忘 了 无 一 例 外 地 忘 记 了 他 们 会 开 ...

  7. 一个测试菜鸟如何成长为测试开发专家

    写在前面: 作为一名摸爬滚打十几年在测试一线的测试老鸟来说,深感企业对测试人员的要求越来越多,越来越高.十几年前招聘网站还没有单独测试工程师职位,大部分是企业把毕业生招进去内部培训,虽然解决了燃眉之急 ...

  8. html5异步编程,一位前端菜鸟对于JavaScript同步异步编程的了解

    来自一个前端菜鸟的对于JavaScript同步异步编程的了解,以下内容,仅供参考.大家知道,JavaScript的执行环境是单线程的,单线程的好处是执行环境简单,不用去考虑诸如资源同步,死锁等多线程阻 ...

  9. 【黑马程序员西安中心】一个女程序猿的成长历程

    一个女程序猿的成长历程 人生总是磕磕绊绊的,没有一帆风顺的旅程,成长路上总有那么几个拦路虎在你不知道的地方藏着,然后在某一天突然跑出来证明一下存在感.这个时候就要看你意志坚定不坚定了,是继续往下走,不 ...

最新文章

  1. 《MonoTouch开发实践指南》一3.6 小结
  2. 老李分享:https协议
  3. 多个不同版本的依赖maven怎样做出取舍
  4. Spring框架----基于子类的动态代理
  5. windows2012R2 无系统盘 安装netframe3.5 (需连公网)
  6. 心形图案爱心代码编程c语言
  7. MEGA2560 arduino烧录USB 芯片flash以及bootloader记录
  8. 树莓派+摄像头实现监控功能
  9. Ubuntu16.04安装NVIDIA Titan Xp显卡驱动
  10. 【Nape教程】认识Nape空间
  11. FileNotFoundException: java.io.FileNotFoundException: HADOOP_HOME and hadoop.home.dir are unset 错误解决
  12. [R] R语言for循环机制
  13. 可能是最难围住的神经猫——寻找必胜路径的算法实现
  14. 日本老爷爷坚持17年用Excel作画,我可能用了假的Excel
  15. python协程处理多个文件_python:多任务(线程、进程、协程)
  16. win7 无显示器 服务器,win7显示器无信号怎么办?电脑显示器无信号修复方法
  17. Sharding-JDBC简单使用
  18. SpringData入门
  19. 不晓得这是航拍器还是探测器之类的,肉眼根本无法看清
  20. [人生哲理] 父子骑驴的故事--人生经典

热门文章

  1. 2014 计算机一级 试题,2014年全国计算机一级考试选择题试题与详细答案
  2. 跟我一步一步实现 Flutter 视频播放插件 (一)
  3. 输入圆形半径,求圆形的周长和圆形的面积,并将结果输出。
  4. 狂拽炫酷校园拽少与阳光善良少女的校园事
  5. [内网渗透]—内网扫描
  6. RFID Kill密码是什么
  7. 什么是电子邮件系统?电子邮箱的格式是什么?怎样注册163邮箱呢
  8. 2022水利水电安全员考试判断题库预测分享(2)
  9. 有没有测试游戏天赋的软件,测测你的电竞天赋有多高游戏-抖音测测你的电竞天赋有多高官网版游戏V1.0...
  10. 游戏盾防御CC攻击的工作原理