Web Developer可以做得更多
美国雅虎前端工程师Hedger Wang。这位原雅虎奇摩的第一位Web Developer,非常慷慨的与我们分享了他丰富的经验。现身说法,比空洞的理论更有感染力,我们发现现在遇到的很多问题也都是他曾经遇到过的。美国雅虎里面Web Developer是一个更帖近用户的前端工程师角色,他们负责把UI和产品功能逻辑整合起来,并增强产品易用性和交互体验。
在他的信息架构(Information Architecture)培训中讲到,像雅虎几百人在一起做产品,内部更需要速度和效率,更需要团队的协同和专业化。以往的开发流程是单线程的,产品经理向设计师提出设计需求,设计师开始设计然后和产品经理反复讨论并定稿,再交给Web Developer转成HTML模板,之后,将模板发给前端工程师开发,前端工程师需要后端提供数据,再将需求提给后端工程师。这时候,Web Developer只能祈祷别把本来写得挺标准的模板破坏。于是,每启动一个项目,哪怕是功能很类似的项目,都要走一遍这样的流程。显然,做法不是高效的,而且在每个环节上都很容易出问题,就像玩多米诺骨牌,任何一个小牌倒了就都白费了。
“Bottom Up Approach”,对!Web开发由下而上实现才是合理的。产品经理在现有系统和现有技术的基础上,策划产品,细化产品流程,最终确定产品都具有哪些功能。这些做好之后,前端工程师就可以开工了。比如,所有页面都有一个登录模块,直接写成这样就可以了:
<h2>登录</h2>
<form method="GET" action="">
<ul>
<li><label>用户名:</label><input type="text" name="name" /></li>
<li><label>密码:</label><input type="password" name="pwd" /></li>
<li><button type="submit">登录</button></li>
</ul>
</form>
</div>
至于在页面上是什么样子,前端工程师完全不用考虑,自有Web Developer后期通过CSS定义它。同样,做一个搜索结果页时,只要生成这样一个结果就好了:
<li><a href="URL">标题1</a><p>描述...</p></li>
<li><a href="URL">标题2</a><p>描述...</p></li>
<li><a href="URL">标题3</a><p>描述...</p></li>
...
</ul>
像这样,前端工程师只需要和Web Developer用XHTML描述一下数据的结构就可以了,但是这时候开发出来的东西就会很难看:

没关系,Web Developer后期拿到设计效果图后,会根据实际的效果用CSS定义它,最后得到的是这样的:

这就是前端采用表现分离(Presentation Tier)的好处,不同的专业Team,可以专注在自己专长的领域开发,以实现并行开发,高效而且不易出现问题。用一个现实生活中的例子类比一下就更清楚了,就像要盖一幢房子,首先要有详细的工程图纸,准确标出厅多大,有几间房,几个门...之后,图纸交给设计师来设计装修的3D效果图,同时工人开始盖房。房子盖完后,3D效果图也出来了,再找来装修队按照效果图,哪儿刷什么涂料,哪儿贴什么磁砖...但如果颠倒顺序,先让设计师设计3D效果图,完成后再由工人们照着效果图盖房,最后这房子即使盖出来也不会合格。对照上面的例子,在产品开发过程中,Web Developer就是一个装修工人的角色。
产品的前端开发可以分为三层:

结构层就是前端工程师开发出来的产品原型。通过CSS叠上一层表现效果。在这个基础上,再利用JavaScript/DOM加强产品的交互体验。这种分层带来的另一个好处是,如果客户端环境不支持JavaScript仍然可以使用产品,如果客户端环境不支持CSS(像手持设备)内容呈线性排列,仍然是便于阅读的。
为什么说Web Developer是一个更帖近用户的前端工程师呢?传统工程师是以完成产品功能,优化服务端执行性能为目的的,而Web Developer要考虑产品在用户机器上的性能、用户的操作体验等等这些细节。尤其是现在,用户端的浏览环境是非常复杂的,显示器有16:9的,也有10寸的小笔记本,还有用更小的PDA屏幕...网站的页面应该定多宽才能适应不同的用户,这就要求Web Developer开发的网站页面采用弹性布局。同时浏览器也是多种多样的,PC上用Firefox、IE,苹果上用Safari,手机上用Opera...通过基于标准的Web开发完全可以达到一致性。如果哪天用户的鼠标坏了,他不得不使用键盘访问我们的网站...虽然现在上网快了,但是要知道对于用户期待看到的内容,哪怕等半秒用户都会抱怨。
看来Web Developer要干的事情真的是很多。还好,雅虎有很多高人像Hedger Wang。雅虎中国的产品目前在用户体验和易用性上,正做着不断的改善和提高。
Web Developer可以做得更多的更多相关文章
- Visual Web Developer 2012安裝教程
1.打开网页链接http://www.w3school.com.cn/aspnet/mvc_intro.asp 点击Visual Web Developer 2012进行安装安装平台(WebPlatf ...
- Microsoft Visual Studio 2008 未能正确加载包“Visual Web Developer HTML Source Editor Package” | “Visual Studio HTM Editor Package”
在安装Microsoft Visual Studio 2008 后,如果Visual Studio 2008的语言版本与系统不一致时,比如:在Windows 7 English System 安装Vi ...
- eclipse中jsp文档无语法着色,安装Eclipse Java Web Developer Tools插件
一.安装Eclipse Java Web Developer Tools插件 1.eclipse菜单:help/install New Software,打开Available Software窗体: ...
- 什么是Web前端,Web前端是做什么的?
什么是Web前端 Web前端,顾名思义是来做Web的前端的.而Web前端开发应该就是来开发基于Web前端的相关应用的或者说是来开发前端的.那么,前端又是什么呢?我们这里所说的前端泛指Web前端,也就是 ...
- 利用web of science做论文综述
在科研过程中,有时会突然接触一个新的研究方向,那么如何开始呢?本人觉得通过作一个论文综述,将能学到很多知识,对于新的研究方向的学习有着极大的帮助.下面将以电阻抗成像技术(Electrical Impe ...
- “教你如何玩转Web响应式布局” 的更多相关文章
“教你如何玩转Web响应式布局” 的更多相关文章 网址:http://www.360doc.com/relevant/641896074_more.shtml
- 网页设计必备工具 firefox Web Developer插件 CSS工具组教程
该插件在火狐浏览器中安装.Web Developer 插件强大的功能超乎你的想象,用于CSS网页布局开发调试只是它强大功能的一部分,对于网络程序的开发也提供了非常强大的辅助设计功能,我们不将它完全的展 ...
- Growth: 一个关于怎样成为优秀Web Developer 的 App
想了想还是决定在今天公布一个预览版.这样才干持续改进.Growth是一个关于怎样成为优秀的Web Developer的APP--结合技能树.成长路线图.进阶书单.Web七日谈以及一些小測验. 它是我对 ...
- 2020 web developer roadmap
2020 web developer roadmap https://github.com/kamranahmedse/developer-roadmap https://roadmap.sh/ ht ...
随机推荐
- vim不保存退出
对于刚开始使用vi/vim文本编辑器的新手来说,如何在不保存更改而退出vi/vim 文本编辑器呢? 当你使用linux vi/vim 文本编辑器对linux下某个配置文件做编辑操作,当你更改完之后,可 ...
- ios开发--GCD使用介绍:4-延迟执行操作
在开发过程中,我们有时会希望把一些操作封装起来延迟一段时间后再执行.iOS开发中,有两种常用的方法可以实现延迟执行,一种是使用GCD,另外一种是使用NSRunLoop类中提供的方法. 1.使用GCD实 ...
- javascript 中$符号是代表什么意思!
$符号在php中是表示变量的特征字符, 在js中它也有很多作用, 一般我们用来命名一个函数名称,获取id的 1. 首先可以用来表示变量, 比如变量 var s='asdsd'或var $s='asda ...
- spring3定时器简单配置
最近在做oa项目中写到一个功能,就是员工每天的签到和签退.当时想了很久都没有想出来,后来自己上网查了一下spring的定时器,然后就有了思路. 下面我贴上自己用到的这个定时器的配置.希望能够和大家一起 ...
- Support Library(5)在eclipse中导入SupportXXXDemos
Support4Demos只用一个v4.,Support7Demos只要v13.jar, SupportAppNavigation只要一个v4.jar. Support7Demos 需要资源全部v7系 ...
- [HDOJ2602]Bone Collector(01背包)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2602 裸的... #include <algorithm> #include <io ...
- leetcode:Implement Stack using Queues 与 Implement Queue using Stacks
一.Implement Stack using Queues Implement the following operations of a stack using queues. push(x) - ...
- c#获取机器唯一识别码
前言 在客户端认证的过程中,我们总要获取客户机的唯一识别信息,曾经以为MAC地址是不会变的,但是现在各种改,特别是使用无线上网卡,MAC地址插一次变一次,所以这样使用MAC就没有什么意义了,怎么办,又 ...
- 使用ajaxfileupload插件提示Uncaught TypeError:has no method 'handleError'
最近使用ajaxfileupload插件上传文件时,后台正常运行时,可以正常使用:当后台出现异常时,上传后没有任何反应,也无任何返回信息,使用chrome查看时,发现ajaxfileupload插件报 ...
- splay入门
在比较了网上的几份模板的速度之后,发现指针版明显快了很多,但是一敲起来....各种不习惯...所以还是学的hzwer 的数组版... bzoj3223:维护reverse操作就可以了 #include ...