前端开发中的几点感想

简记自己最近对于前端开发的几点感想。从2013年7月到现在,断断续续从事前端开发快两年了。文字很水,学识粗浅,大神轻喷。

不要局限于前端

最近这一个多月,自己在技能树上对这几个方面进行了扩展:

  • NodeJS
  • SQL, MySQL
  • LESS

个人打算通过NodeJS,逐渐触及服务器端、数据库端的开发知识。在使用NodeJS 0.12.0 + Express 4.12.2 + MySQL 5.6 搭建一个简单的社区网站的过程中,已经体会到涉猎前端之外的技能所带来的好处了。

现在的IT行业,分工已经呈现越来越细的趋势。小的或者初创业的互联网公司,大都不会招太多前端开发岗位,他们往往希望一个员工,能够“通晓”数据库、服务器、前端、切图,如果会点测试、运维、营销,效果更佳;而任何一个初具规模的互联网公司(好比,100人以上),基本都会非常明确地设置前端开发岗位,或者成立自己的UED(User Experience Department,用户体验技术部)。大公司设置如此细分的工作岗位,是为了整体能够更有效率的工作。与富士康对工艺流程的细分、不同岗位的人各司其职,本质上是一样的。

我是半道出家,在花了两年时间掌握了初级的前端开发技能之前,可以说是毫无计算机基础的。从自己的角度来看,前端工程师不应该只是掌握了HTML/CSS/JavaScript/jQuery/Bootstrap/Grunt/Underscore/Angular 等等技能就自认为可以高枕无忧了的。去写一些关于服务器如何处理前端请求、从数据库获取数据再返回给前端的代码(好比用NodeJS+Express+MySQL),会对“前后端分离”这样的命题,以及RESTful API这样的名词,有更为深刻的理解。

使用模板

jQuery简化了DOM查询,“抹平”了不同浏览器的互不兼容的实现,但这并不意味着它就是最后的答案。在执行根据数据渲染视图、获取表单数据等任务时,应该抛弃拼接HTML字符串、逐个查询DOM元素值这样的思路,而应该转向模板以及模型。

模板的一大优势就是,它使得数据与视图在物理上进行了一定的解耦。刚开始做前端开发的时候,总是使用字符串拼接来生成HTML标记,放眼望去,一堆JS代码里夹杂着无数的HTML标记,不禁让人怀疑:“当年我把JavaScript代码从HTML标记里分离出来,结果这倒好,HTML里没有了JS,JS却充斥着HTML。”

早期,模板标记在服务器端可能应用更多,像JSP,PHP,但随着前后端分离的兴起,前端开发也常常使用模板标记,而且语法特性也往往类似(例如Underscore的模板就跟EJS、JSP很像)。这在一定程度上缩减了前后端开发的差异。

使用CSS预处理器

如果仅仅用一个样式表来管理整个网站的样式,那实在是太痛苦了;而即使划分了明确的模块,使用了多个CSS文件,在编写代码的时候,重复书写的类名等等实在太多,而且也体现不出CSS DOM的树结构。前端开发人员应当了解并且最好在自己参与的项目中使用CSS预处理器。

有几个显而易见的使用CSS预处理器的好处:

  • 重复使用的颜色、字体值
  • 处理浏览器厂商前缀
  • lighten, darken等函数
  • 树结构明显

常见的CSS预处理器:LESS,Stylus,SASS。

CSS是直接面向浏览器的,而CSS预处理器则具有更好的开发友好性。

移动优先与浏览器兼容

这年头,移动端太重要了。

如果网站不是那种偏应用型的(像Google Docs或者在线绘图类的),那么总应该优先考虑小屏幕设备下的UI设计问题。这个观念现在应该已经深入人心了,也不多说了。

要说的是浏览器兼容性问题。初学者(当然,我现在也是初学者)往往鄙视兼容性问题,并且以“按照W3C标准”开发、“仅支持Chrome”为荣。这其实是比较幼稚的或者过于理想的观念。从古到今,跨平台问题就从来没有被解决过。即便现在HTML5已经板上钉钉了,“仅支持Chrome就OK”的想法也是在三五年内难以实现的事情。

就算老板没有要求网站有良好的兼容性,身为一个有追求的前端攻城狮,也应该时不时打开古老的IE,或者某些国产的大用户量的浏览器,看看自己的网页在它们眼里是什么样子~~

不要给自己挖坑埋雷

最后的最后,以一个经典段子,来提醒前端er们,不要给自己的程序埋雷。如果觉得开发得不爽了,那么越早重构越好!

三个程序员被要求穿过一片田地,到达另一侧的房子。
菜鸟程序员目测了一下之间很短的距离,说:“不远!我只要十分钟。”
资深程序员看了一眼田地,想了一会,说:“我应该能在一天内过去。”菜鸟程序员很惊讶。
大神程序员看了一眼田地,说:“看起来要十分钟,但我觉得十五分钟应该够了。” 资深程序员冷笑了一声。
菜鸟程序员出发了,但只过了一会,地雷爆炸了,炸出了巨大的洞。这下他必须偏移预定的路线,原路返回,反复尝试穿过田地。最后他花了两天到达目的地,到的时候颤颤发抖,还受了伤。
资深程序员一出发就匍匐前进,仔细地拍打地面,寻找地雷,只有在安全的时候才前进。他在一天的时间内小心谨慎地缓慢爬过了这片地,只触发了几个地雷。
大神程序员出发之后径直穿过了田地,十分果断。他只用了十分钟就到了另一边。
“你是怎么做到的?”另外两个人问道,“那些地雷怎么没有伤到你?”
“很简单,”他回答道,“我最初就没有埋地雷。”

如何才能不给自己埋雷?我想,等我写了十年代码,再回来回答这个问题,应该就可以答上来了吧。

Share