之前在那篇《 我的编程之路 》里,我讲述过我的编程之路。今天我们就来说说我的前端之路,相信以后还会有一篇《我的全栈之路》。
记得在一直有三个主要的发展方向:编程、写作、设计。依据这三个方向来说, 前端就是编程和写作的结合体 。
1
入门
故事要从大一说起:当时在入学前,我和楚非经常在“ 福(fu)建 老乡群”讨论技术,于是到了大学就勾搭在一起了。 他是学美术的,我是学电焊(电子信息工程)的 。在后来的大学期间里我们常常搭档拉一些私活、做一些网站。
在我们有了远大的理想之后,我们就开始分前后端——就是谁做前端,谁做后端。这个问题的答案:难道不应该是 学美术的用PS做前端,学电信的C写语言的做后端 吗?反正答案大家都知道了:不是。在今天看来有两个原因:一、他是用Python的。二、我想学点设计。
于是,我就踏入前端这个坑,后来我就变成了萝卜。
我一直都喜欢实战一个语言、框架、技术等等,所以在最初的时候我只能做出这样的页面——这是我的第一个网站的水平, 求不取关 。
并且很多写得比较好看的都不是我写的,就开始了长路漫漫的 Cookbook 学习了——这就是我为什么我对动物园(O'Reilly)的书好感比较深的原因了。
2
切图
大一暑假时,我就尝试向几家网络公司投了简历,第一个实习机会就是切图,当时这样的网络公司算是比较普遍的,不过我想今天大多数公司也是这样的:
当时我只实习了半天就觉得混不下去了,主要是那个电脑太卡了—— 完全不适合用PS 。那半天做的事情就是这样的:那家公司给了我个静态图片,让我把它切成一个个图层。类似于我们在写CSS + HTML的时候,划分DIV的感觉。
接着,很快地我就找到了第二家公司。这家公司要我做的事情:基于一张图片,做出一个静态页面。
不过,在今天我都是在做第二件事,除了这个网站不是这样的做的:
但是它真的不好看,求UX帮改进。
在那之后的很长一段时间里,我觉得前端就是HTML + CSS,外加 JavaScript这个小三 来操作HTML和CSS。当时我们面对客户的需求后,要做的第一件就是:找个jQuery插件。
后来,我就去学后端、还有“空手”焊电话:
幸好,最后焊出来的这个电路是能用的。
3
前后端分离
某次在闲逛的时候,发现了一个基于jQuery Mobiel的单页面应用,发现原来Web也可以这样做。但是因为是基于jQuery就还觉得好奇了,到了后来都已经是实习的时候。当时项目上在用Backbone,今天已经是微服务 + React了。说是幸运也不好,不幸也好,经历过这么大的爆发。
APP和移动Web的出现改变了系统原先的MVC架构。
这时候出现了一些微妙的变化,于是我也经历了这些变化。
逻辑代码不仅仅只在后台出现——同样的逻辑也会出现在前后端
由于前端打交道的是API——人们不得不重新设计API,微服务开始流行
信息安全变成了一个更重要的话题了
混合应用带给了前端新的可能性
Node.js将前端人员引入了后端
人们改进了JavaScript——ES6
等等。。
越来越多的网站开始重构自己的系统,让自己的网站更轻量级,更快。当然,更有极端者走向了One JavaScript。
4
One JavaScript
如果说这个世界上有一个语言来解决绝大部分的技术问题,那么只有JavaScript。
因为只有JavaScript能在浏览器上运行,即使我们用了其他语言转换成JavaScript,那么它最终也是JavaScript。
在那篇《 最流行的编程语言JavaScript能做什么? 》,实际上就是我对JavaScript的一些尝试:
数据可视化。我最喜欢的领域之一了,将难以读懂的数据,转换成美秒的图表。
移动应用。无论是Growth还是我现在的项目,我都在尽可能去优化这种快捷地开发方式。
服务端。我在我的物联网项目上,将Node.js用到其中,发现还是很不错的。
桌面应用。Growth的桌面版就是这样的一个尝试,只是这个包太大了。
VR和AR。还记得之前提到过的火星漫游者吗?
硬件。今天除了Tessel、还有Ruff可以做这样的事,未来还会有更多的硬件出现。
物联网。既然前后端都统一了,那么它也将在物联网领域统一。
全平台应用。
依照现在的趋势, 未来人们只需要有一份代码,就可以运行在桌面、桌面Web、移动Web、移动应用上。 我想这个时间应该就在今年里就可以轻松做到了——已经有了,虽然还不怎么样。
但是这一切并没有让人太满意, 技术并没有与业务有太好的隔离 。
Hi,如果你追求技术,热爱前端,如果 你也在深圳 ,不妨来 ThoughtWorks深圳 试试。当然,你也可以去ThoughtWorks 西安、北京、成都、武汉、上海试试 。我们正在寻找茫茫人海中的你。 不仅可以见到我,你还有机会看到Martin Fowler——不要和我说你不认识他。同时,你将体验到国内领先的 软件工程实践 ,以及结对编程:
以及大把的不加班、刷GitHub、刷技术涨经验的时间——我的意思: