《渐进增强——跨平台用户体验设计》一第1章 为体验而设计1.1 优秀的代码,麻烦的设备

第1章 为体验而设计

渐进增强——跨平台用户体验设计
“总有些人干过这种事,在网页顶部或底部搞一个小黄条,写上‘请使用XX浏览器(如IE6)访问本网站以获得最佳访问效果’。要我说,这种人到底是多么想回到过去啊,回到Web诞生之前吗?那样你就不可能在别的电脑、别的文字处理器,或者别的网络来访问你这个不想让别人看的网站啦!”

——Tim Berners Lee

互联网中,唯一不变的就是变化。四下观望,永远都有新的设计风格,新的语言、框架、工具、新的上网设备在博人眼球。乱花渐欲迷人眼,城头变幻大王旗,连“上网行为”这个概念本身都不能保证难免一天不会被重定义。

在这样一个日新月异的行业,人们普遍感到一种技术焦虑,作为置身互联网行业中的你,我猜也有和我相同的感受。

在我近20年的互联网从业经验中,我目睹了太多技术的变迁,从Java applets、Shockwave、Flash、Prototype、jQuery、960gs、Bootstrap,到Angular、React,等等,技术的发展就像长江后浪推前浪;在技术发展的同时,设备的屏幕也由小变大,又由大变小,设备的更迭也犹如花开花谢;然后,我们还经历了因设备碎片化导致的开发混乱,面临过为不同设备独立开发,还是一套代码兼容不同设备的概念挣扎。后之视今,亦犹今之视昔。大江东去浪淘尽,唯有Web这个概念,在不断发展变化中保留了下来。

Web的概念之所以经久不衰,是因为它无关设备和屏幕尺寸;Web不是软件,不需要用户去安装;Web本身对其承载的内容具有良好的适应性和无限的延展性;Web可以作为内容访问的窗口,集成在任何需要的地方;Web可以触及每个用户;当今的Web几乎能够胜任一切。

1.1 优秀的代码,麻烦的设备

2012年初,我所在的公司接待了一个客户,这个客户被他们移动端APP的用户登录验证问题伤透了脑筋,所以想请求我们的帮助。情况是这样的,他们开发了好几个原生APP,这些APP都有一个用户登录的公用模块,是通过Web Service的方式访问服务器上的统一接口来实现的。这种技术方案虽然方便了代码的管理,却为他们后来的开发留下了麻烦。他们想在Web Service的模块中加入一个安全验证的步骤(类似“你就读的第一所学校的名称是什么?”这种验证问题),却发现部署这个页面比改这个页面麻烦多了,大概步骤如下。

1.将安全验证这个需求开发完成。

2.将代码放在Web Service上。

3.更新每个原生APP,以使新需求生效(可能需要调整每个原生APP的UI)。

4.将每个APP提交到应用市场。

5.指望用户更新到新版本的APP。

这位客户解释了他们为什么会采用原生APP内嵌Web Service的解决方案。他们的APP的版本覆盖了iPhone、iPad和Android三个平台,希望通过Web方式统一管理用户登录行为,利用Web Service和原生代码分离的特点降低代码耦合,提高重用效率,且做到功能的迅速部署和更新。事实上,这种方式确实已经被大多数网站所采用,并且收到了很好的效果。

了解了客户的困扰和需求后,我们开始了对这个项目的改造。尽管要考虑到跨三个平台的问题,但我们并没有过于纠结每个平台的技术差异和繁杂的屏幕尺寸。我们的思考方式是,设想每个组件在每个屏幕下可能的展示效果。首先,页面的布局必须设计为响应式的,无论是通过小屏幕或大屏幕设备访问,都能保证可见模块有良好的适应性。然后,我们使用了一些轻量的HTML5和JavaScript技术,希望在尽量不增加文件大小的情况下为页面加入一些新特性(例如使用HTML5原生表单验证来代替客户端JavaScript验证),这样,在CSS或JavaScript因网络或者用户设置的原因而无法加载的情况下,页面依然能够验证和响应用户输入的内容。

于是,客户得到了解决方案,高高兴兴地走了。我们也很开心,喝喝酒做点别的,时间过得很快。几个月后,这个客户又回来了。他们这次开了一个新的脑洞,想让所有访问他们触屏版网站的用户,也能通过之前那套用户验证系统来登录。他们提供了一份触屏版网站的访客UA数据(即用户通过何种设备或浏览器访问过这个登录页),数据显示,在两天之内,UA竟然有1400种,就是说,用户通过1400种不同的设备和浏览器访问了这个页面。客户拿着这份数据,说兼容问题你们能搞定吗?我们秉着客户至上的精神,认真分析他们提供的数据[1]并进行了整理。我们在数据分析结果中发现,这1400条登录记录中,有25种设备的使用频率极高,差不多覆盖了97%的用户。其他3%的用户形成了数据长尾,他们使用的设备林林总总,某些设备实在超出我们的想象之外。得到这个数据后,我们感到一阵暗爽,因为在几个月前的开发中,我们已经把97%的问题解决啦!所以我们只需要解决其他长尾设备可能出现的问题,方式是——遇见一个解决一个。

客户给我们的预算中,包括兼容1400种不同的设备或浏览器的开发成本,包括兼容一些很古老的Web设备(例如Blackberry4和Openwave这种),对这些古老设备的兼容,花去了预算的1/3。

当所有需求都厘清并完成的时候,我们盘点了我们的项目实际工时和完成时间,大约只花掉了目标预算的1/2。我们自己很开心,因为我们提前交付了项目,显得我们的团队很高效。同时我们的客户也很开心,因为他为公司节省了很多开发经费,他的老板势必会说,你真能干啊(这些是我们这群不通人情世故的程序员的想象,实际情况我们就不知道了)。

一切归功于几个月前,我们对项目的改造,几乎使我们不用做什么,就解决了97%的问题。这一个项目的快速推进,靠的不是我们解决bug的能力和执行速度,而是印证了项目遵循一个好的设计开发思想是多么重要,这种设计和开发思想,就叫做——渐进增强。

渐进增强是一种拥抱未来的设计思想。这种设计思想无关你面对的是何种设备或浏览器,也无关你的代码是HTML或CSS的哪个版本。使用渐进增强的设计思想便意味着,你为用户提供了一种无论使用什么设备和浏览器都能正确访问你的页面内容的方法。

听起来很棒啊!你可能会想,这么强大的思想,落实到代码上需要的工作量也很大吧?哈哈,你想错了,一旦你理解了渐进增强思想的实现原理,你会发现其实落实起来相当简单。

在2003年美国西南交互设计大会上,Web标准化组织的Steve Champion首次提出了“渐进增强”的概念,用来描述一种Web设计的思考角度——即围绕页面中的内容,从内容出发进行设计。一旦你明白了渐进增强这个概念的内涵,你就会不由自主地顺从某种逻辑来思考。谢天谢地,在Web诞生差不多10年之后,我们终于有了一套Web设计的指导思想[2]。

时间: 2024-10-01 08:08:51

《渐进增强——跨平台用户体验设计》一第1章 为体验而设计1.1 优秀的代码,麻烦的设备的相关文章

《渐进增强——跨平台用户体验设计》一1.5 向后兼容,向前适应

1.5 向后兼容,向前适应 中学时代,我经常用MS-DOS系统上的Word文字编辑软件写作业.这是个特别专业的软件,因为打开它就只能写字,别的什么都干不了[11].那时的Word软件没有太多的编辑选项,却也能满足大部分的需要,对于我来说,足够用了. 然而,当时我写的作业,用现在的Word软件已经打不开了.二十多年过去,这个软件已经不再支持MS-DOS版本的DOC文件. 有人说,都20多年过去了,你还惦记那些中学写的作业啊--我不是这个意思.我相信除了我之外,很多人都用过MS-DOS下的Word软

《渐进增强——跨平台用户体验设计》一1.6 适应未知的设备

1.6 适应未知的设备 然而,还是有人认为,设计思想这东西看不见摸不着,扯那些没用的是在浪费时间.在Web设计师Tim Kadlec的博文"我们的设计并没有真正理解Web"的后面,有个读者的留言是这么说的[15]: "说得好听,但是不接地气.你得算一下捕捉用户的成本.如果一些用户根本不是你的目标用户,不能为你带来任何收益,那么,干嘛为他们进行优化?根据这种设计思想,本质上你是要为所有用户的体验负责,无形中会大量增加开发成本.但是,恕我打个比方--我们都知道成衣的尺码分大中小号

《渐进增强——跨平台用户体验设计》一1.3 技术实现和用户体验

1.3 技术实现和用户体验 早期的Web技术更新得非常快.比方说,HTML的标准还未统一,微软和Netscape两家公司争相往HTML里面添加新的元素和行为,以证明自家技术比对方更厉害.后来又有了Java applets[6].RealMedia.Shockwave.Flash和其他的私有技术,我们的网页变得很复杂,同时用户需要安装很多插件来支持这些技术. 各家标准和技术的不统一导致了"优雅降级"概念的诞生.所谓优雅降级,指的是在用户的浏览器不能完全支持某项功能的时候,为用户提供一个在

《渐进增强——跨平台用户体验设计》一1.9 渐进增强的设计思想

1.9 渐进增强的设计思想 渐进增强是一种设计思想.运用这种设计思想进行设计实践,会让每个设计师和开发者节省大量的时间和成本.这种设计思想帮助你了解你所面对的真实用户和设备环境,让他们获得最适合的用户体验,从而体现出Web与生俱来的适应性. 渐进增强是一种无间断,连续的设计思想,不是为了某些设备而特殊优化,而是面向不同类型的设备,累加地提供用户体验的提升.在接下来的章节中,你会学习到如何把这种思想应用到Web设计的实践当中. [1] 作者的分析代码详见https://perma.cc/4EAE-

《渐进增强——跨平台用户体验设计》一1.8 分层次设计

1.8 分层次设计 渐进增强是一种设计的思考方式,关于这种思考方式,我经常拿M&M豆来打比方(图1-5).我特别喜欢吃M&M豆,所以我们想一下,是不是所有的M&M豆最里面都有一颗花生啊?M&M豆为什么要在最里面包含一颗花生,而不是别的什么东西呢?我猜,因为花生是一种普遍都能接受的食品,除了少数过敏者,很少有人不喜欢吃花生.所以,花生是M&M豆的核心,正如一个网页的内容是网页的核心.广告啊.导航啊,这些都是次要的,大家来到你的网页是来看内容的,别的都不重要. 发明M&

《渐进增强——跨平台用户体验设计》一1.7 提升Web的可访问性

1.7 提升Web的可访问性 Tim关于Web的看法是:任何Web页面,我们都可以把它看成一个文档.同样内容的文档,我们只需要保留一份就够了.不论用户通过何种浏览器或设备访问,内容是唯一的,不同的只是呈现形式.这样做的好处显而易见--Web世界是由"超媒体"[17]联系起来的庞大网络,我在一个页面中添加了一个超链接,却不能预料到用户是通过什么设备访问并点击的这个链接.如果文档是唯一的,那么入口链接也一定是唯一的.我只需要添加一个链接,用户无论从任何设备点击它,都能获得最佳的访问体验.

《渐进增强——跨平台用户体验设计》一1.2 早期的Web是什么样

1.2 早期的Web是什么样 最初,我们的电脑是没有图形界面的[3],我们看到的,只是黑色屏幕上的一行行绿色的命令行和文字[4](图1-1),上网的用户个个看起来都和程序员没什么区别. 命令行模式的浏览器仅支持一些基本的文本格式,如缩进.对齐等,但是在1990年,Web上传输的内容基本都是些文本和用于发表的内容,所以这样的内容渲染程度也是能够满足人们的需要的. 我是从1990年开始上网的,本来一直用着这种命令行模式的浏览器,用着用着,我发现情况有了一些变化.1993年,美国国家超级计算应用中心(

《渐进增强——跨平台用户体验设计》一1.4 你满足不了所有的人

1.4 你满足不了所有的人 在今天的Web环境中,按照PSD文件的像素去还原一个网页,然后在任何设备上都展示成一个模样的时代已经过去了.我们要考虑的因素越来越多. 在技术实现方面,屏幕尺寸.像素密度.CPU运算速度.内存大小.传感器的支持程度.功能差异.不同接口,乃至不同的操作系统.同一操作系统的不同版本.不同的浏览器,同一浏览器的不同版本.插件.插件版本.网速.网络延迟.防火墙.用户自己设置的代理.路由器,以及日新月异的技术发展,让我们的Web环境愈发复杂起来. 技术实现方面之外,我们还要考虑

面向未来Web设计:内容与外层分离 渐进增强

中介交易 SEO诊断 淘宝客 云主机 技术大厅 现在终端设备种类繁多对WEB设计提出更多要求 是时候考虑针对未来,设计出体验友好的Web了.现在终端设备种类繁多,如台式机.笔记本.上网本.平板电脑.多功能手机.智能手机等等,而这仅仅是一个开始.技术更新换代的速度在加快,我们的工作流程.标准及基础设施正在触及它们所能承受的极限.这个相互联通的时代不断创造着新的挑战,同时也酝酿着巨大的机会. 谁也无法预知,在未来将会发生什么.如果有人说可以创造出永不过时的事物,这又将是多么愚蠢的事啊.虽然我们无法提