前几天在卖桃者说里写了一篇「前端能当 CTO 吗」,引发了一些读者交流,因为内容涉及一些人物评价,就不公开发布了,今天做一次前端漫谈。
我不是前端出身,现在也没在做前端的相关工作,怎么漫谈呢?早些年我自己写过不少 JavaScript 的程序,现在部门里有个不算小的前端团队,所以勉强可以写一写。很多人说老池你真他妈能写,好像啥都知道,其实我只写一些自己稍微懂一点的内容,完全不了解的东西,万万不敢动笔。
现代互联网技术的成熟导致了技术分工的极度细化,一个技术团队往往会包括前端、后端、安全、运维、架构、测试等各种职责,尤其是前后端分离的技术实现,像关老爷手中一把锋利无匹的大偃月刀,彻底切断了前后端程序员的联系,只剩下了 HTTP。
我们在2000年左右编程的时候可不是这样,从来没有前后端分离这回事。如果你自己不能扛起一个项目,不仅是会被淘汰,而且会被嘲笑。我最开始用 Perl 写 CGI 程序,后来陆续学了 JavaScritp、Java、C#、Python、Objective C、Go 等,早期的项目或产品基本上都是从前做到后,除了设计之外,从切图、前端页面到业务逻辑、持久化、连接池、异常、缓存、日志、集群等等,基本上都要自己参与编程或独立实现,在那个年代,你很难以专业细分的方式运作项目,因为根本找不到那么多程序员。
现在的情况完全不一样了,互联网的高速发展需要技术上更为专业、更为精深的编程人员,所以前后端技术体系的分离,就成了大势所趋,形成了一种「反模式」。
早期开发更多是把前端当做一个展示层,大部分业务逻辑都放在服务端实现。前端很轻,因为前端很弱,没有 AJAX 技术,没有 JQuery,没有框架,浏览器引擎和规范都不完善。可谓「通讯基本靠喊,下雨基本靠伞」,最多弄个 XML 数据岛进行页面渲染,没什么重型武器。
随着前端技术的突飞猛进,前端终于从轻量级的小姑娘,变成了矫健的女侠客,依然妩媚多姿,但是前端开始承担更多更重要的职责和角色。这里的「反模式」并不是一种贬义,而是指前端的强大,导致一部分业务逻辑从服务器端转移到了前端去做,后来逐步形成了前后端分离的开发方式,前端负责界面上的大部分业务逻辑,然后通过 Rest 服务与后端进行交互。原来业务系统看重的事务问题,要么一次 Rest 算一个事务,要么做成幂等服务,要么通过事务补偿的方式实现,要么交给异步消息队列处理,这样就形成了一套更为轻量级的开发模式。现在大部分互联网公司里已经看不到 Java 和 HTML、JS 混在一起的 JSP 文件,也看不到 PHP 和 CSS 混在一起的 PHP 文件,前端程序员们更多的是和 HTML、CSS、JavaScript、JSON 以及满浏览器的 Dom 元素打交道。
不止于此。
前端技术的脚步似乎没有停歇的意思,它们有了离线存储,有了画布,可以在画布上做出精妙的动画和展示效果,有了移动端开发框架,也有了服务器端编程框架。Node.js、Meteor.js 的出现让前端程序员大大出了一口恶气,他们昂首阔步闯入了服务端开发的领地,并开始进行全栈开发。对于这个新的闯入者, C 程序员、Java 程序员、Go 程序员们纷纷表示:兔子尾巴长不了,看你们还能火几天。说完以后就继续去嵌入式、大数据、高并发、多核编程去了。
但是前端不管不顾,依然很火。如果你问我现在最火的程序员职位是什么?我不得不告诉你,是前端,优秀的前端!前端已经取代了前几年红得发紫的移动开发者,成为程序员新贵!
除了前端呢?我觉得 Data Scientist 可能是下一个爆发的职位需求,毕竟数据科学家这个 Title 实在是太诱人了。关于 DS,我会专门写一篇文章,我觉得它比前端更有价值。
前端技术日新月异,技术的更新换代,必然引发业务架构的调整,这里面就会牵扯出一个传统网站的改造问题,之前我和一些读者也讨论过这方面的内容。在这个领域,我不可能提出细致入微的技术方案,毕竟不是那块料,但是因为经历过,可以给一些常规建议,仅供参考:
1、做好技术选型,使用团队熟悉的技术,比如 AngularJS,Bootstrap 等。
2、所有的 URI 都应该是 Rest 风格的,比如这样:http://www.sample.com/item/10011001,而不是这样:http://www.sample.com/getiterm.jsp?id=10011001。
3、Rest 的路由表可以在后端控制,也可以在前端控制,我们最早都是在服务器端的框架里维护的,现在前端框架 AngularJS,Backbone 等,都有路由模块,放到前端更灵活。
4、上线的页面应该进行预处理,比如代码压缩、JS 混淆,替换静态资源的链接为 CDN 的链接等。前端也是有自动化构建工具的,推荐 Gulp。能自动化的事情,一定要让机器去做。
5、所有页面的静态资源比如图片,CSS,JS 等,没有特殊要求,一定要放到 CDN 上。
6、移动端页面怎么处理?布局和逻辑简单的页面,采用响应式设计可以搞定。复杂页面,最好还是维护两套代码,成本更低。
7、SEO 问题、浏览器兼容问题,需要根据业务需求提前设定好,不要等开发人员都搞完了再做标准上的变化,这会带来很大的麻烦。
每到一个阶段,都会有一个「最火的技术职位」,比如 C 程序员,Java 程序员,iOS 程序员,Android 程序员,现在是前端程序员,数据科学家。要不要追,要不要转,我觉得不重要,这些技术很快就会沉淀成传统的成熟的技术,到了那个阶段,真正的技术专家才会显山露水,拔剑四顾,一战功成!
我们招前端,有实力你就来:chijianqiang#smartisan.com
订阅卖桃者说,回复「卖桃」,或者点击自定义菜单里的卖桃者说。
点击原文,下载拉勾 App
文章评论