cly84920

web前端开发的“创意”,伪前端的全栈同学你不懂

我是不爱看源码的,只在极少数情况下看过一点源码的代码片断。源码剖析之类的事,从来没干过。然后,看到任何有趣的效果,都会想,如果我自己来做,会如何去实现,不会去看别人的源码然后照着源码敲一遍地“学习”。我喜欢看的东西有两类,一类是底层api,看到一个api就会去想,它可以用来实现什么产品功能;另一类是编程技巧,比如如何命名,如何解耦,如果复用,如果设计api等等。有了这两方面的知识积累后,就靠“创意”去组合出产品功能了。


“创意”这个词估计有不少程序员同学不太能理解 —— 如果你过于依赖封装好的现成的组件或框架的话。其实前端的编程,在表现力方面非常考验这种创意,因为前端原生的UI控件非常少,那么产品的功能需求往往需要工程师自己利用底层的html + css + js组合出最终的功能,举个类比,用.net拖出界面出来,就像直接买回了一套芭比娃娃玩具,房子、衣柜、娃娃都是现成的,而web前端做个界面出来,就像买了套乐高玩具,要自己去组装,如何组装是需要“创意”的。


web服务端开发,很大程度上是完全没有这种“创意”的需求的。服务端编程在框架的帮助下,基本上相当于是在写一个一个controller函数。函数内部是过程式的,不需要类似前端的这种创意。很多后端转前端的“全栈”同学其实非常稀缺这种前端“创意”层面的锻炼,不熟css,不熟DHTML,能通过bootstrap和angular之类的框架绕过去的都尽量绕过去了,然后按照自己习惯的思维方式,尽可能将编程的重心放在了js上,typescript、coffeescript、es6、模板引擎、TDD、函数式编程等等等等,还是语法糖+玩字符串的套路。其本质是在扬长避短,但其实并没有抓住前端编程的精髓所在。


那么前端编程的精髓是什么?精髓其实就是我说的基于乐高的创意锻炼。有些同学说,你这是反智,有了C和java,硬要回去写汇编。其实汇编这个比喻并不正确。前端在实战时,应用层的表现效果可以非常丰富多彩,这种丰富多彩是没办法被第三方组件库完全封装好封装完的,DHTML的创意能力是个必选项。


在web2.0时期,DHTML的创意能力引来了一轮非常大的爆发,有很多让人惊艳的效果在井喷,还有邻居flash在做各种补充与竞争。说个具体的例子,早期的图片轮播是由flash制作的,图片切换的过渡效果用了flash的滤镜和遮罩,非常漂亮。而因为flash毕竟是插件,不像html那样可以和服务端更轻量级地无缝组合,所以轮播图演变成了html的解决方案,但过渡效果就变得非常平淡了,只有位移或者透明度的变化。在表现力上是一种倒退。


在html5初期,css3和一系列新的api,比如socket、canvas、audio、transform、transform3d、全屏api、重力感应等,给前端的表现力带来了极大的想象力。前端可以奋起直追flash的表现力,甚至更加强大。我非常期待各种应用html5的RIA应用迎来繁荣,这种东西才是真的web app。


为了在这个更加强大的未来不至于落后,我跳出了web site和普通spa(webIM之类)的开发,加入了html5游戏开发的领域。这个领域是最能将html5的表现力发挥到极致的。我本以为在h5时代,类似webqq这种充满了创意的作品会越来越多,但没想到从10年到17年了,这种灵活应用了html表现力的新产品形态大爆发一直没有出现。更让人吃惊的是,随着大量跨界而来的同学的加入,前端领域俨然成了一个四不像,已然忘了自己的核心竞争力,技术的核心资产,大本营是什么了。


当然,这和另一个问题是直接相关的 —— 随着移动终端的崛起,web2.0对前端表现力的挖掘,从产品需求上戛然而止。移动端对前端的表现力要求并不高,可能和移动终端的屏幕大小以及移动端web性能有关。没有了产品层面需求,自然就没有了驱动力驱动工程师们主动往这个方向去探索。


在未来,我相信曾经我想象中会在2012年左右出现的html5技术升级,带来了产品表现力创意大爆发,终会到来。虽然速度比我想象中慢了太多,但应该终会到来的。只是,不知会是在哪年了。我悲观地以为,5年可能就又是一代技术人了,当下这一代的同学热烈讨论的技术工程化和框架之争,在我说的那个技术产品化时代回头看,也许会觉得非常搞笑。不知道会是哪一代的同学会遇到我说的这个景象了。

评论(1)