前端:水很浅,但水很浑。。。

 

      本周最热门的帖子莫过于这篇《前端,我为什么不要你》了。作者针对前端的一次次面试吐槽,引发了极大的讨论热潮。匆匆浏览了300条之多的各种评论之后,发现很多人对该博主的吐槽和招聘要求都极度不满,仔细梳理一下,其中主要观点无外乎这么几种:

1、博主的小公司没有资格也没有底蕴更没有财力要求招聘到技术全面一些的高级人才,有来应聘的就烧高香了,得赶紧收着才是,不能挑三检四;

2、博主靠秀优越来贬低应聘者,不能因为自己会的多一些就要求求职者也要啥都会;

3、关于前端技术的掌握,很多人观点惊人的一致,那就是写代码懂编程似乎是对前端要求太不公平,反正懂得再多也用不着,没必要学那么多;

4、认为项目分工细化,要抓住一点往深里研究才是正道,跟前端没关系的根本连理都不用理,好像多知道一点对前端是种侮辱一样。


 

      不过看了这位博主的文章以及各位的评论,结合本人的一点认知,我得到了一个结论:前端的水很浅,但水很浑

      首先说大家对前端的认识和定位,很久以来,就各有各的看法,不像对后端那样明确。比如有人认为前端就是切图转化HTML,顶多JS做个特效,加个FLASH动画,没什么大不了,谁都能做;也有人认为前端是整个项目直接面对甲方的最终成果,后端可以有点瑕疵,但前端必须要甲方满意才行,位置很重要。但认为重要的也分两种情况,一是认为界面UI的设计重要,必须做好美工,做漂亮一些才行;另一种则认为,不但要有好UI还要注重性能,还要注重用户体验方便操作,还要注重易于维护,代码要规范,不亚于一个小全栈,典型代表就是上面提到的这位饱受争议的博主了。


     

      以上,大家对前端的认知和定位,虽然有轻有重,但是至少有一点可以基本确定:那就是前端的水不深,技术要求不算很高,只要会HTML+CSS+JS+多媒体就基本是一个合格的前端了,到哪里都是干这些活。况且这些技术都有标准可以遵循,能够创新的余地也基本没有,会用就足够了,也就是说技术方面“水很浅”这是大家基本的共同观点。

      作为我个人来说,本职工作并非是全职写代码,但也断断续续维护了一个本部门内部办公项目长达7,8年之久了。说起来前端是一塌糊涂,但因为日积月累扩展,系统已经臃肿到无法改善的地步了,只能将就着继续维护。我们人手有限又不是主业岗位,所以也不分什么前后端,整个项目采用的webform框架。经过多年的维护升级经验,我个人觉得,作为前端,特别是这种asp.net的webform前端,要做好维护或开发,并不是表面上看起来那么容易。对技术的要求看起来也好像是“水很浅”,一脚能踩到底,但是你往往看不清你应该如何使用这些浅显的技术来满足功能需求。所以我说“前端的水很浑”

 


      我说了半天,可能很抽象,那就举个例子,既然分开前后端,自然是后端以数据处理为主,而前端以数据展示为主了。我们假定后端是0响应的,就是说后端兄弟的数据处理很快瞬间就返回,那么现在问题就只能出在前端了。现在有个页面是一个常规一般的前端完成的,设计界面,切图,然后用可视化工具自动转成同样布局的HTML页面,为了酷炫加入了FLAH特效,老总看了效果很好,拿去给客户演示。但在客户的电脑上,页面等了一两分钟才刷出来,而且还没有最得意的flash酷炫特效。

      问题的症状有了,而且聪明的同学一定晓得了,是因为客户的浏览器没有装FLASH插件造成的,但为什么刷新却这么慢呢?一般没控件顶多也就看不了特效啊?如果作为前端你一定也很委屈,老总测试都是好好的,而且自己也是按照标准做的HTML和切图以及flash,为什么加载就慢了,而另一个由后端完全输出也带flash的页面在客户那里却正常速度刷新出来,这是咋回事?人品太差了?其实这里就用到了一个浏览器的渲染顺序的知识点。此次前端制作的页面HTML是由自动化工具生成的,工具为了方便定位和布局,自动采用了table标签来做布局,虽然效果不错,但是一旦单元格内的某项元素无法正常加载,则整个表格的渲染会被挂起,直至等到元素加载完毕或超时不加载之后才会继续渲染后续的元素,只有整个表格内的元素全部渲染完毕才会显现出来。所以当flash无法显示时浏览器会尝试等待,直到一两分钟确认超时后才继续处理表格的其它内容。这就是一个表格标签渲染阻塞的特性,如果你作为一个只对自己“负责任”的前端,只管HTML、切图、CSS+JS等岗位职责内的工作,那么当你的工作成果出现因为职责外原因导致的疑难杂症时,你不但要背黑锅,还要被人质疑你为了精通前端而不愿学习其他内容并且总是赖以傲娇的前端技术的深度。


 

      很多人为了钻研得深,往往放弃甚至不愿意多掌握一点其他相关领域的内容,甚至觉得前端学写代码掌握一点HTTP协议知识是种莫大的屈辱一样。不可否认,前端的工作也是很辛苦的,作图切图,配搭CSS,写特效脚本也都是脑力活,跟后端一样的重要,但如果只是保持这个状态真的不需要多学什么了。正如我说的“水很浅”,前端的技术都是有标准不可创新的技术,一脚能踩到底;但要想把前端做精做深,真的需要多借鉴一下外围的力量和技术,当大家的技术一样时,谁能拉来外援谁自然会技高一筹的。


 

      我个人建议是:能多掌握一些跟前端有关的其它领域知识会对前段工作有很大促进作用,至少会开拓一下你的思路,即使不能直接派用场,也能起到一定的启发借鉴作用。前端的水很浅,所以大家都挤满了前端的水洼子,连后端的同学都能随心所欲的客串一下,但前端的水也很浑,仅仅靠空荡荡的双手是很难比别人抓到更多的鱼的,如果你能备上一个网兜,你就比别人有优势可以抓到更多的鱼了。

 


 

      补充:很多人疑惑为什么HTTP我也要留意一下呢,明明我的前端在浏览器里展示,跟HTTP不沾边呀?这里我重申一下自己的项目整体观供大家参考,无论项目分工怎么细化,无论项目设计怎么模块化,有一点不会变的就是,所有的分工所有模块都是围绕把项目做好来分工来设计的,所以不要把自己的职责看成是孤立的,不要不考虑团队不考虑项目整体的来任性发挥,否则你会脱节的。回到一个B/S项目,虽然你的前端是在浏览器范围内,但是在浏览器展现你的前端之前,你的前端实际上也是在“后端”的,它需要通过HTTP协议的传送才能来到浏览器端,所以你完整的前端生命周期中必然包括HTTP协议。而且你的前端和后端交互的时候也是用到HTTP协议的,不管从哪一个方面考虑,HTTP协议都是你职责范围内的一部分,你了解一下也是算得上必然吧?

 

      以上观点,仅供参考。

posted on 2015-06-06 22:31  卓酷  阅读(3986)  评论(32编辑  收藏  举报

导航