就这样进入了前端开发

时间:2021-08-30 13:43:31

回顾

立夏,广州。今晚回来的路上,在学校的草坪上发现许多萤火虫,眨着眨着,点缀这个初夏的静夜。上次见到这番画像的时候,已经是一年前的事了。时钟转得飞快,眨眼自己也到了毕业的季节,总想要装一下文艺。无奈毕业设计甚是郁闷,苦如鸡肋。三心两意之下,便关注起了微博上前端圈子里的面试之争。其实之前也有诸如价值之争等话题,但这次的话题引起的涟漪更像是一石起十浪。大牛们的话语都很有意思,观点也是百家争鸣,看得我这个菜鸟也思考良多。
加之又到了实习校招的季节,看着那些熟悉的题目,想想自己这一年来在前端开发这条道路上,又收获了些什么?于是写下这段文字,权当总结,亦作抛砖引玉,希望自己的经验能帮到他人。

懵懂初开

去年三四月份的那段时间,正是实习求职的时候。当时真真切切的就是一枚前端菜鸟,知道前端是啥,想往前端发展。于是拿着几个CSS属性就当令箭,一头扎进面试堆中。甚至连如何清除浮动,为什么要清除浮动都没有弄清楚,又如CSS选择器的权重,基本CSS Hack也是云里雾里。于是挂彩多次,回头恶补了一番CSS基础知识,首先从CSS最基础的属性开始,一步步来,记忆最深刻的还数选择器权重,然后到定位,浮动布局的学习。这段时间特意去背了经典的三栏圣杯布局,淘宝的双飞翼布局,当然这都是临急抱佛脚的节奏,就是知其然,不知其所以然。但也是迈出的第一步,起码知其然了,在这个阶段,就像winter大大说到的position属性,我也了解到其中三大属性的表现。于是我基本能混过笔试这一关了。

浅略皮毛

能过了笔试,自然就到了各种面试的阶段。这个时候主要就开始学习javascript了,一开始的时候也都真是无知者无畏的姿态,知道那么几个基本语法,基本类型就以为不过云云,与之前写的C#差不多嘛。其实当时让我写个右下角的缓动弹窗都能捉急不已。其实我的学习路线也和笔试题面试题保持一致,那就是问到什么不懂,就去学什么。那段时间就开始了解一些JS的基本功,诸如DOM操作,数组的运用,自然还去背了yahoo的14条和看了34条前端性能优化的建议等等。同上一部分提到的,也是知其表面的状态。现在明白当时为啥一路碰壁了,那就是没有纵云梯也想攻城池。
这提到的两个阶段,我之前也写了相关的文章来记录自己的捉急之处,有兴趣可以去翻翻。

开始入门

其实这个Title想用知耻后勇的,但想想,仅是知耻,这个勇还真是谈不上,于是还是用开始入门这个更朴实。过了实习校招高峰期,奋而开始恶补。其实当时自己犯了*的错误,就是总想一口吃一个大胖子,打算三两天就能突飞猛进。很盲目地囤积了一堆JS相关的书籍,从红宝石书到犀牛书,从蝴蝶到猫头鹰,加上图灵那一堆蓝皮书。反正是与js相关的都先搞回来再说。于是囫囵吞枣,效果适得其反。都是东扒一把,西倒一犁,形成不了自己的知识体系。很多不是那个阶段自己能懂的东西都硬着头皮搞,搞到很难堪。但这段日子,也让我粗略了解到前端JS的整体脉络,为以后做下了准备。这里记忆最深刻的是什么是闭包?当时还特意去打印了博客园汤姆大叔的一系列JS教程,陈皓的那篇闭包文章,还有犀牛书里的那段介绍。结果愣是搞了一个星期还是似懂非懂的状态,真是令人捉急啊。虽然现在也不敢肯定自己真的懂了闭包,但起码我是明白了该如何去使用。
在经过一段时间的恶补之后,算是有点基础知识了,于是各种自虐,就是去找各色各样的笔试面试题来做,试试自己的斤两。但结果总是不如人意,俗称自己打脸!但也积累了不少知识。

略知一二

秋天到了,大雁南飞了,小学语文书都喜欢这样写。去年秋天,也就是校招开始的时候,自然我就开尽引擎,各种冲笔试面试。之前的准备,可以让我过了各种笔试阶段,但很多时候都会在面试的时候挂掉。那时总是觉得莫名其妙,为啥总是会挂掉呢。后来明白,应该对各种知识更深一步的理解了,就是开始尝试刨根,然后散叶。于是混迹于各种著名的前端论坛,UED,大牛博客之流的,看看人家是怎么说怎么写的。我读了一丝的那些年一起清除过的浮动,有点明白了overflow:hidden;和clear:both的不同之处,通过W3help大概了解了BFC和hasLayout是怎么一回事,在zxx的博客里隐约明白了float和absolute的奇妙之处。
在js方面,也尝试阅读一些国外的PDF,了解一些更深入的东西。像Javascript Pattern和Javascript Design Pattern等,尝试写一下单例,工厂,观察者,订阅这些所谓的模式,看看人家所讲的所谓深拷贝和类式继承。虽然是依葫芦画瓢,但也让我体会到了JS的神奇之处。自然HTML5和CSS3也是我的囫囵吞枣范围之内,看了CSS3实用指南,起码知道了animation是怎么写的。不知天高地厚地去参加完一个codeJam回来之后,对Nodejs和websocket之流也想玩一下。在大学最后一个暑假里,自己是最高产的。在实习的同时,用笨拙的代码也写了一个Node Express加MongoDB驱动的小小站,和子杰那家伙也尝试了中兴的比赛,就是一个PhoneGap的H5 RSS阅读器。遭遇PhoneGap各种不给力之后,尝试一下AppCan,也鼓捣出一个半烂尾的H5应用出来,居然也可以拿到新浪微博的应用尾巴。确实鼓舞了我自己的士气。

努力学习

在一次面试之后,我也开始接触一些前端MVC相关的知识,诸如Backbone和Angular。也了解一下模块化的RequreJS和SeaJS。这个阶段的心态开始端正了,发现自己真心是一个小菜鸟,太多东西需要学了。也明白自己的水平处于哪个阶段,需要学习些什么了。没了以前那种狂买书狂看书的盲目,而是有选择的细看每一本书,完整地读了一遍第六版的犀牛书。深知自己的代码功底实在是太弱了,直到现在也是,写出来的代码毫无美感可言。于是开始模仿一下github上别人的代码,学习写一下OO的JS。说到这个OO,突然想起当时自己还浮躁地过了一遍数据结构,然后各种基本的排序算法用于面试。发现其实那根本不是我的范畴,于是渐作罢,只理解一些简单的思想。

层叠之美

原谅我抄了一丝那篇博文的词语。层叠之美,正是CSS的奇幻之处。很庆幸现在的组长嘉玮给了我一个舞台,让我可以发挥。十月底入职之后,发现自己的CSS功底其实还真是很薄弱的,以前掌握的纯粹的是为了笔试面试,一到实战就各种暴露了。之前一直在学JS,忽视了CSS的深入。这个阶段就更多的是页面重构的工作。记得当时面试,背了PNG,JPG和GIF的区别和用处,在实际切图中才发现,自己之前多么的二逼。所以说绝知此事要躬行,很多之前背下的前端优化理论,在工作中终于可以一一体会了。从入职时候PS都不懂几个操作的菜鸟,到现在熟练的运用PS切图输出,自己也逐渐明白该如何对图片质量进行控制。组长的指导也让我明白,很多理论看上去很美,其实归根到底还是需要根据业务环境进行权衡。不是说那些大大们鼓吹什么,就应该怎么。然后经过IE6到IE9的洗礼,自己对兼容性的处理水平也提高了不少。从一开始会犯下忘记CSS RESET,到现在的可以比较淡定地处理IE6的奇葩臭虫,感觉到CSS真是不可小觑。比较遗憾的是,自己遇到问题的时候,没有很及时地总结出工作环境中遇到的IE8以下BUG List,导致现在回头看,总是觉得缺少些什么的感觉。
在这期间,自己也尝试了AngularJS的实战开发,后端搭配的是PHP。后端很瘦,就是一些DB的CRUD,然后respone一段JSON,主要的逻辑操作都在Angular的Controller。这个尝试让我明白到自己对项目代码的整体把握还是处于小白阶段,那就是需求一多,整个代码就像一坨屎。我该是时候在代码耦合,代码重构上下一些功夫了。 然后还大概学习了那本HTTP权威指南,对HTTP请求的有了所谓原理性上的认识。

继续前进

作为一枚前端,我要学的东西实在是还有太多了,特别是V2EX里潜水多了,容易自卑(笑~)。从HTML和CSS上,如何更好的语义化,如何写出优秀的HTML结构,如何做到更好的响应式设计,如何做到更好的维护性和拓展性等等,真是十只手指都数不完。在JS方面,怎样才能达到更优的页面性能,怎样才是更合理的DOM操作是当下业务要面对的问题,而很火的诸如JSHint,Grunt,PhantomJS等等都是需要保持与时俱进的了解。像公司后端主要使用的Python也是自己很感兴趣的方向,也需要慢慢学习。
总的来说,经过这一年的学习和工作,让我变化最大的就是知道自己的水平处于前端开发里的哪个层面,然后对于各种信息流也懂得加上自己的思维判断而非当初的盲目。前端这一行,水很深,要努力更要谦虚,要自我鼓舞不要妄自菲薄,加油!