本周最热门的帖子莫过于这篇《前端,我为何不要你》了。做者针对前端的一次次面试吐槽,引起了极大的讨论热潮。匆匆浏览了300条之多的各类评论以后,发现不少人对该博主的吐槽和招聘要求都极度不满,仔细梳理一下,其中主要观点无外乎这么几种:html
一、博主的小公司没有资格也没有底蕴更没有财力要求招聘到技术全面一些的高级人才,有来应聘的就烧高香了,得赶忙收着才是,不能挑三检四;前端
二、博主靠秀优越来贬低应聘者,不能由于本身会的多一些就要求求职者也要啥都会;web
三、关于前端技术的掌握,不少人观点惊人的一致,那就是写代码懂编程彷佛是对前端要求太不公平,反正懂得再多也用不着,不必学那么多;面试
四、认为项目分工细化,要抓住一点往深里研究才是正道,跟前端不要紧的根本连理都不用理,好像多知道一点对前端是种侮辱同样。编程
不过看了这位博主的文章以及各位的评论,结合本人的一点认知,我获得了一个结论:前端的水很浅,但水很浑。后端
首先说你们对前端的认识和定位,好久以来,就各有各的见解,不像对后端那样明确。好比有人认为前端就是切图转化HTML,顶多JS作个特效,加个FLASH动画,没什么大不了,谁都能作;也有人认为前端是整个项目直接面对甲方的最终成果,后端能够有点瑕疵,但前端必需要甲方满意才行,位置很重要。但认为重要的也分两种状况,一是认为界面UI的设计重要,必须作好美工,作漂亮一些才行;另外一种则认为,不但要有好UI还要注重性能,还要注重用户体验方便操做,还要注重易于维护,代码要规范,不亚于一个小全栈,典型表明就是上面提到的这位饱受争议的博主了。浏览器
以上,你们对前端的认知和定位,虽然有轻有重,可是至少有一点能够基本肯定:那就是前端的水不深,技术要求不算很高,只要会HTML+CSS+JS+多媒体就基本是一个合格的前端了,到哪里都是干这些活。何况这些技术都有标准能够遵循,可以创新的余地也基本没有,会用就足够了,也就是说技术方面“水很浅”这是你们基本的共同观点。框架
做为我我的来讲,本职工做并不是是全职写代码,但也断断续续维护了一个本部门内部办公项目长达7,8年之久了。提及来前端是一塌糊涂,但由于日积月累扩展,系统已经臃肿到没法改善的地步了,只能将就着继续维护。咱们人手有限又不是主业岗位,因此也不分什么先后端,整个项目采用的webform框架。通过多年的维护升级经验,我我的以为,做为前端,特别是这种asp.net的webform前端,要作好维护或开发,并非表面上看起来那么容易。对技术的要求看起来也好像是“水很浅”,一脚能踩到底,可是你每每看不清你应该如何使用这些浅显的技术来知足功能需求。因此我说“前端的水很浑”。asp.net
我说了半天,可能很抽象,那就举个例子,既然分开先后端,天然是后端以数据处理为主,而前端以数据展现为主了。咱们假定后端是0响应的,就是说后端兄弟的数据处理很快瞬间就返回,那么如今问题就只能出在前端了。如今有个页面是一个常规通常的前端完成的,设计界面,切图,而后用可视化工具自动转成一样布局的HTML页面,为了酷炫加入了FLAH特效,老总看了效果很好,拿去给客户演示。但在客户的电脑上,页面等了一两分钟才刷出来,并且尚未最得意的flash酷炫特效。模块化
问题的症状有了,并且聪明的同窗必定晓得了,是由于客户的浏览器没有装FLASH插件形成的,但为何刷新却这么慢呢?通常没控件顶多也就看不了特效啊?若是做为前端你必定也很委屈,老总测试都是好好的,并且本身也是按照标准作的HTML和切图以及flash,为何加载就慢了,而另外一个由后端彻底输出也带flash的页面在客户那里却正常速度刷新出来,这是咋回事?人品太差了?其实这里就用到了一个浏览器的渲染顺序的知识点。这次前端制做的页面HTML是由自动化工具生成的,工具为了方便定位和布局,自动采用了table标签来作布局,虽然效果不错,可是一旦单元格内的某项元素没法正常加载,则整个表格的渲染会被挂起,直至等到元素加载完毕或超时不加载以后才会继续渲染后续的元素,只有整个表格内的元素所有渲染完毕才会显现出来。因此当flash没法显示时浏览器会尝试等待,直到一两分钟确认超时后才继续处理表格的其它内容。这就是一个表格标签渲染阻塞的特性,若是你做为一个只对本身“负责任”的前端,只管HTML、切图、CSS+JS等岗位职责内的工做,那么当你的工做成果出现由于职责外缘由致使的疑难杂症时,你不但要背黑锅,还要被人质疑你为了精通前端而不肯学习其余内容而且老是赖以傲娇的前端技术的深度。
不少人为了钻研得深,每每放弃甚至不肯意多掌握一点其余相关领域的内容,甚至以为前端学写代码掌握一点HTTP协议知识是种莫大的屈辱同样。不能否认,前端的工做也是很辛苦的,做图切图,配搭CSS,写特效脚本也都是脑力活,跟后端同样的重要,但若是只是保持这个状态真的不须要多学什么了。正如我说的“水很浅”,前端的技术都是有标准不可创新的技术,一脚能踩到底;但要想把前端作精作深,真的须要多借鉴一下外围的力量和技术,当你们的技术同样时,谁能拉来外援谁天然会技高一筹的。
我我的建议是:能多掌握一些跟前端有关的其它领域知识会对前段工做有很大促进做用,至少会开拓一下你的思路,即便不能直接派用场,也能起到必定的启发借鉴做用。前端的水很浅,因此你们都挤满了前端的水洼子,连后端的同窗都能为所欲为的客串一下,但前端的水也很浑,仅仅靠空荡荡的双手是很难比别人抓到更多的鱼的,若是你能备上一个网兜,你就比别人有优点能够抓到更多的鱼了。
补充:不少人疑惑为何HTTP我也要留意一下呢,明明个人前端在浏览器里展现,跟HTTP不沾边呀?这里我重申一下本身的项目总体观供你们参考,不管项目分工怎么细化,不管项目设计怎么模块化,有一点不会变的就是,全部的分工全部模块都是围绕把项目作好来分工来设计的,因此不要把本身的职责当作是孤立的,不要不考虑团队不考虑项目总体的来任性发挥,不然你会脱节的。回到一个B/S项目,虽然你的前端是在浏览器范围内,可是在浏览器展示你的前端以前,你的前端实际上也是在“后端”的,它须要经过HTTP协议的传送才能来到浏览器端,因此你完整的前端生命周期中必然包括HTTP协议。并且你的前端和后端交互的时候也是用到HTTP协议的,无论从哪个方面考虑,HTTP协议都是你职责范围内的一部分,你了解一下也是算得上必然吧?
以上观点,仅供参考。