2010年1月18日 的存档

  • 页面重构中的模块化思维

    日期:2010.01.18 | 分类:网页重构, 设计制作 | 评论数:0

    “模块化”只是我们对于过去一直使用的技术、方法的一个新潮的称谓,就像“Ajax”。不过做为页面重构发展的一种趋势,越来越被大家重视,不自觉也满口的“模块化”,只是你真的理解什么是“模块化”吗?

    什么是模块化?

    对“模块化”的解释,在 CNKI 中就有28种。可见“模块化”思维使用的广泛。最接近页面重构中的“模块化”,现有的解释应该就是软件开发中的解释了。

    先看一下百度词条是怎么解释“ 模块化 ”的:

    模块化是指解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程。每个模块完成一个特定的子功能,所有的模块按某种方法组装起来,成为一个整体,完成整个系统所要求的功能。模块具有以下几种基本属性:接口、功能、逻辑、状态,功能、状态与接口反映模块的外部特性,逻辑反映它的内部特性。在软件的体系结构中,模块是可组合、分解和更换的单元。

    相关的书籍也蛮多的,有兴趣的同学可以搜一下。需要强调一点,我们所借鉴的是一种思维的方式。

    页面制作为什么需要模块化?

    站点内容越来越多、代码越来越臃肿,渐渐影响到了客户端的体验(主要是打开速度),影响到了维护的效率。有什么方法可以解决这些问题呢?

    我们很容易就想到:减少代码冗余、提高代码重用率、图片压缩等等,而这些要如何实现呢?模块化思维可以解决,即可以有效减少代码冗余、提高代码重用率,更重要是可以支持到多人维护,降低维护成本。CSS写法较为灵活,容易产生代码的耦合,使用模块化也可以在一定程度上降低耦合度,对于BUG的定位也有帮助。所以,我们更应该在站点前期就重视并使用“模块化的思维”编写站点。

    我们之前经常提到的站点性能优化,有相当一部分也是“模块化”的内容,比如提高代码重用,提高开发效率等等,“模块化”的优点还有很多,我大概列了一下:

    * 提高代码重用率
    * 提高开发效率、减少沟通成本
    * 降低耦合
    * 降低发布风险
    * 减少Bug定位时间和Fix成本
    * 提高页面容错
    * 更好的实现快速迭代
    * 更好的支持灰度发布

    其中最重要的一点,我认为是“提高代码重用率”,这也是模块化最重要的特点之一。

    如何实现“模块化”?

    这里的主要问题是HTML与CSS的“模块化”,我们可以看下换肤的实现方法:

    * 同一类名,换文件(JS)
    * 同一文件,换类名(JS)

    由此可知HTML与CSS的接口实现:

    * CSS引入的三种方式
    * 类名

    为了更好的实现这种接口,需要有相关的(交互、设计、页面、开发)约定、规则、规范,比如:所有当前状态都使用同一个类名“nonce”,所有变灰的表现都使用原类名后加“_n”,Tab的实现方式等等。有了这些约定、规则、规范后,HTML代码就很容易可以实现模板化,统一接口规范。

    有两个误区需要先认清下:

    * 模块化后并不是就能被使用在任何位置(模块化后的代码段也是有适用的范围限制,需要一个提供接口规则的环境)
    * 模块化后并不是就不能再变更(模块化后的代码段可根据实际需要做修改)

    完全独立的模块放在同一项目中,由于项目有自己的表现、交互统一性,所以各模块间必定出现类似的部分,这些部分可以被提出来做为公共的定义,减少冗余,这时就会出现耦合的问题,完全不耦合是不可能的,因此模块化中很重要一点就是“适度的耦合”。有了公共定义,就得调整模块样式的实现方式了,而这种调整也会影响到“接口”的实现方式。

    由于本篇主要是讲模块化的思维方式,具体实现的细节留待以后的文章中探讨。

    感谢:tencent UED 分享!

  • 如何精简用户界面

    日期:2010.01.18 | 分类:用户体验设计(UED) | 评论数:0

    简洁、易用、友好、直观。这些词语经常被提及,但在执行过程中经常被遗忘。这是因为软件功能的复杂性所导致的。如何处理好软件的复杂功能往就可以决定它的命运。一个复杂的界面会让用户不知如何操作。如果,减少复杂的操作过程并精简操作界面,那该软件的用户体验就大大的提升了。

    去除无用的功能

    研究发现:80%的用户仅仅使用软件20%的功能。而那些没用的功能不仅浪费开发时间,也使得软件更加难以使用(这些功能对用户的阻碍作用大于有用价值)。软件试图尽力可以把任何事都做好。而一个成功的软件应是简练精干的,可单独智能化的解决单个问题。
    精简的软件可通过削减功能得到。通过默认去除的方法判断一个功能是否有必要保留。将软件所有的功能进行真正的筛选。如果该功能不能帮助大多数用户完成日常的任务,那么可以将其排除在外。删除功能是艰难的,当整理完毕后看到用户顺畅的使用软件。你就会知道多么值得去做这件事情了。

    隐藏复杂部分

    如果实在无法去除某个复杂功能,那么就将其隐藏。通常情况下,不常使用的功能要比经常使用的功能占据更多的屏幕**。而优秀的界面应该确保最常用的功能在最显著的位置,将不常用的功能隐藏。

    当我们重新设计CMS系统时,我们无法去除一个复杂的功能:批量编辑功能。在之前的版本里,在主屏幕上有一整排的批量编辑按钮。约占据了屏幕30%的区域,但我们发觉很少有人会用到此功能。我们的解决方法是,放置一个小图标并在旁边显示数值以示下拉列表里有几个选项。点击图标或数字则显示下拉列表。通过这种方式节省了大量的**,也不会干扰用户使用那些最基本的功能。

    最小化视觉干扰我们已经讨论了通过去除与隐藏的方式降低界面复杂性的方法。但减少“视觉感知”的复杂性也是很重要的。最小化视觉干扰将使得界面看上去易于使用。减少视觉干扰的两个方法是:空白与对比。

    空白,是指介于各个元素之间的间隙。它应是你默认的布局工具。经典法则之一:如果可以使用空白就不要放置其他设计元素。如果用这种方式布局,你会很惊讶调整界面的空白就可以完成布局了。

    虽然使用空白多多益善,但也要尽可能的保证有对比感。设计理论家说:设计师应使用最小的视觉变化来表达想法。事实上这就是意味着元素之间要有主次感。

    你可以看到修改过的版本有很重的黑线,与之前的边框不同。那个版本视觉干扰更小呢?(当然是原来的更好)大量的空白区域减少视觉干扰并让人觉得更舒适。

    做减法、重复使用,循环利用当软件成形后,问题经常发生在程序的各个结合部分。存在的问题往往可以通过相同方法加以解决。界面中应使用相同的组件。使用相同组件的两个好处:减少开发所需时间;给人一致的使用体验,如果用户学会使用一个操作,他们就可以把相同的操作行为运用到进行其他操作中去。

    在设计CMS过程中,我们在表单验证上花费了大量的时间。我们用红色框出无效的区域,甚至增加红色的提示框来说明每个填写表单的环节有多少错误。

    在之后的开发过程中,我们在需求列表中增加了版本比较的功能。与其创建全新的框架,不如使用在已有的框架上进行改进。我们用蓝框标出已修改的表单,并使用蓝色提示框标注该区域。通过这种方法我们快速部署到用户已经熟悉的界面上。

    重复使用元素是另一种可以减少界面复杂的方法,因为用户可以迅速的熟悉软件。

    空白状态不应空白空白状态是指界面无数据时的样子,如用户初次使用软件。作为设计师,我们花费大部分精力用来设计如何最好的展示内容,但时常忘记如何展示无数据的样子。

    如何建立合理的默认值是很重要的。软件的空白状态通常是给用户的第一印象,用户通过第一印象来考虑是否来使用软件。好的空白状态可有助于用户学习使用软件的途径,帮助用户学会初次使用软件的基础操作。

    Versions的mac版本显然在程序的空白状态投入了很多心思。在首次运行的时候,程序突出了两大人们可能会用得到的功能。

    再次重复:不要忘记空白状态!

    相关展示我们已经见过大量界面混乱,复杂的软件。然而,有效的减少程序的复杂性有点难度。

    Invoice Machine 的界面十分的简约。示例显示它非常节约扩展部分并注重细节。

    Freckle只是确保你可以跟踪自己的时间。简洁的界面闪现活力,将例行任务变得有趣。

    Image Spark黑白色的渐变。界面几乎没视觉干扰,易于使用。

    Ballpark有简洁的界面,用色不跳。

    Krop,其核心就两个表单:地址与关键词。

    Fever网站的整个目的就是减少你与感兴趣博客之间的距离。它通过非常简单独特的方式来实现。

    Screenr 是个惊人的简单截屏并发布到Twitter的软件。值得注意的是没有的功能它有,但其他类似软件有的功能它都没有。

    Squarespace 在隐藏复杂功能方面做得很好。虽然它是网络的发布平台,它把功能隐藏在一个简洁的界面中。

    总结

    * 减掉不必要的功能;
    * 然后隐藏那些不能减掉的功能;
    * 减少视觉噪音并重复利用元素;
    * 使用空白帮助用户;

    (翻译略有删减)
    英文地址:http://www.smashingmagazine.com/2009/10/07/minimizing-complexity-in-user-interfaces/
    原文地址:http://blog.uxredesign.com/interactive-design/minimizing-complexity-in-user-interfaces/

    来源:http://forum.chinaui.com/viewthread.php?tid=67424&extra=page%3D1

最近文章

最近评论

分类目录

紫枫印迹

2010年一月
« 十二   二 »
 123
45678910
11121314151617
18192021222324
25262728293031

标签云

CSS+HTML css2.0 HTML5 SEO seo优化 SNS User Friendly2009 VIP web 中文手册 互联网 交互 交互设计 产品 产品设计 产品设计师 体验 信息架构 关键词 制作网页 前端开发 原型 命名规则 垂直居中 小技巧 手机网站开发 按钮 支付宝 李开复 流程 用户习惯 用户体验 用户界面 用户研究 用户访谈 瞬间的设计 网站运营 网页设计 背景 行动 视觉设计 设计 设计师 身体语言 页面重构

用户体验设计(UED)

紫枫友情收藏

86ue_rss

设置