05 June 2016

无论是上家公司还是现在的Have,无不对工程师要求全栈;而全栈工程师也是现在市场上一个非常流行的概念;虽然在第一家公司做feature也的确做过从后做到前一条打通的体验,现在的这家公司就更别说了,后台,运维,运营工具,以及很少一部分的app我都会写;但我不得不说,我依然不敢自称全栈工程师,因为我相信技术的每个方向都有很深的可以玩的地方,至少我现在的能力,只能说cover了比较多的方面,但很多方面只是能用,能干活,但并没有精力钻研到一定程度;全栈工程师的优点就是理论上对其他人的依赖会很少,自己的开发效率能提升很大,解决问题能在不同层面控制,因而能选择最合适的层面解决问题;但带来的困境就是对人的要求非常高,招人不好招;

技术栈上,我本身是后端出身,做feature会比较多的涉及到前端;运维和app只是在Have才遇到;而之前的经历让我一直想在前端上把自己的实力提一个台阶。之前做feature的时候,如果一个feature的实现是1周的话,我可能1天在写后端,将数据返回,1.5天在写js,2.5天在写html和css;而除后端的1天外,其他4天对我简直是一种折磨,就是因为写得不顺畅。前端我当时的技术能力大概只能针对别人写好的template,加一些组件,用js做各种页面的效果和逻辑控制都没问题;css可以抄别人的然后改,调试;就是最传统的开发方式,服务器渲染好模板,数据填充,页面返回;有时有前端工程师配合的时候,简直爽得不要不要的;

因为想提升前端,所以还会关注些前端的工程师(还围观了前段时间前端界的吵架。。),发觉后来的趋势都变成后端只提供数据api,通过json返回,而前端去负责渲染;还有前端的MVC等等;当时是很懵的,再加上最近一两年Node的火热,前端的什么路由啊,预编译啊,打包啊各种词层出不穷,我就更懵了。。一直想找机会尝试下,但之前看文档,或者看项目的主页都有点约看越晕。本来是想通过学习,在Have的运营工具后台上使用的,但项目急,没时间等我完全折腾出前端的路数来,于是就还是用Golang写着传统的web页面,用了Bootstrap套一套组件,还勉强凑合;这版需要加订单后台管理,想想这个复杂度也会比之前的更高,用js操作各种数据和模板复杂性肯定更高些,于是决定再花些时间到前端上。

前端有anjularjs和react两个很酷炫的框架;我略微翻了翻,前者有全功能,但很大很重的名声;后者就明显轻量级多了,但因为推出较晚,且最近又有react native这样的明星项目坐镇,其实最近一年的热度更热得多,而Vue也因为是国人工程师的作品,最近1年也上升的神速;

我大概是中午开始看文档,Vue其实之前weibo上吵架时提到就看过了,就一个感觉:小清新;其他没啥;anjularjs,心底里抗拒重的东西,略微翻了翻,就看不下去了;然后看react,文档是写得很清楚的,并且tutorial里的那个示例还觉得挺酷炫,虽然写法上感觉有点绕,但看了thinking in react后,感觉说清楚了很多东西,于是跃跃欲试起来,再加上心里打得算盘是通过这个学习react后,之后可以继续研究react native,这样可以为之后的生产力提高做一个储备;

于是就开干了,虽然写法略绕,但总算把我想要的样子渲染结构了,不过样式全没了;继续深入了解,发现react首先推荐的inline styles的方案,其次,如果想要比较好的处理样式,可能还要引入其他东西,比如radium,甚至,原来已经用得挺顺手的bootstrap,还得用一个专为react的版本,另外,react的哲学也已经是不要css了;然后就是各种打包等等,看着这里的时候,我就有些挫败,因为想升级前端最大的目标就是提高生产力,以及跟上技术更新;如果还要我去写inline styles,感觉我会痛苦死的。。。折腾到下班,还是没什么太大的头绪,感觉前端这两年搞出来的工具太复杂了。。。

郁闷的到家后,转而想,既然都看了一个框架了,不如看看Vue这样的解决同样问题大概需要什么,还是依然这样复杂?如果如此,那我可能就放弃了,直接使用更老的方式保障需求,等待以后招前端工程师来更新运营工具;将文档再翻一遍后,发现无比顺畅且轻松的正确渲染出了页面,当然先塞的假数据;而将这种动态的方式渲染出页面后,我也第一次体会到了所谓的数据与视图分离;回想之前感触不深一个很重要的原因是我们当时的应用都不是spa,都是通过ajax或者刷新页面;如果是前者,当ajax数据回来后,还要手动操作页面的显示变更,而有了vue以后,理论上数据更新就好了,页面自动就变成了新的样子,amazing。。。原谅我土鳖。。。

当然,这样的代价也许是性能;但我是用在后台工具,who cares。。反正老板总是用着最新的iPhone的。对我来说是个解放:

之前的开发后台工具的方式是,Golang应用写controller,在里面组装数据,然后套模板,套页面,再根据页面的逻辑,做一些ajax接口更新数据;请求完以后处理页面的更新;

现在是,页面要什么数据,ajax口子准备好,前端写个页面,用vue写个数据与页面的binding;页面加载好,数据请求回来,就再也不管视图更新了;感觉倍爽。

至于什么vue的组件化之类的,留待下次有需求时再研究;由于vue的给力,我甚至想重构下之前的工具,反正看着也应该很轻松。

坦白说,如果没有这次折腾,订单工具后台可能没那么快能上线,因为我又会陷在页面布局中不可自拔。而通过这次折腾,我其实更深得理解了前端界正在进行的革新。还算有收获吧。



blog comments powered by Disqus