API设计——javascriptAPI设计的内容,呈现了唯一的挑战对所有的开发者,不管是否你正在开发一个公共的库或者一个内部的库。javascript的动态性,库使用者的匿名和需求的模棱两可都给API设计者呈现了一个令人畏惧的挑战。然而对于一个好的API设计是没有捷径的,但是可以从现代流行的一些javascript库中提取出一些设计准则是可能的!
这一切都取决于你,你可以开发一个具有良好设计的API,这个API可以帮助你的用户掉进众所周知的“成功坑”,这就意味着你的库对于开发者来说是舒服的和熟悉的,同时也提供了积极的强化和当开发者和你的代码交互时建立的信心。
选择器article.blogPost和下面展现使用完全一样的语法,这绝不是偶然的!
jQuery的选择器引擎被设计为了使我和其他开发者能够使我对CSS选择器的理解和它的引擎进行交互。结果可想而知,如果jQuery需要我用一种新的,为特定目的形成的语法,我将失去快速,明显和高效。
我们可以获得灵感从这些框架中,如jQuery,或者其他框架,并应用这些灵感到我们的设计中。然而,获得灵感并不是抄袭,有个度的问题,任何设计过API的人如果是仅仅的基于别人的想法,不管好与坏,他都将继承。如果我们将在好的javascript中获得的准则运用到其他领域中,我们能开发拥有好的API的框架,这些API设计能被运用在任何情况下。
虽然软件不具有与绘画或建筑类似的视觉评价标准,我们仍倾向于使用与物理实体一样的形容词来描述软件质量。例如,使用“优雅的”与“漂亮的”来赞美软件并不罕见。如果用与物理实体相似的形容词描述软件接口是合理的话,那么当然也可以使用与之相同的原则来评价软件设计。
对每一个原则,将列出一到多个实例来说明,这些例子表明流行的Javascript库API设计是怎样遵循这些原则的。
在艺术作品中,一致性是一个作品背后不可缺少的观念,或者说设计者如何把一些事物组成连贯的一个整体。协调性,从另一方面来说,是一个作品相似元素的布局,这会在考虑整体时产生一种简洁的感觉。
KendoUI树形组件
KendoUI面板组件
KendoUI对所有组件使用一致的kendoX语法,促进整体的协调。更重要的,这样的设计依赖jQuery对象为DOM元素封装了统一的一层,使设计有利于所有熟悉jQuery开发者。数百万开发者使用类似的“土语”(jQuery语法),KendoUI可以顺利地跨库使用。
统一和协调的目的是让API新手感觉熟悉和舒服。通过虽然功能不同,但是语法相同或相似,使API变得熟悉,大大减轻了开发者使用新工具的负担。
通过使用一个熟悉的概念并且映射到自己的类库,jquery避免了新的选择器语法,同事也创建了一个机制让新用户通过一个可预测的API快速的把类库应用到生产。
接下来的原则是相称性,它是用来衡量一个作品中元素的大小和数量的。与其说一个好的API是一个小的api,相称性是相对于用途的大小。一个相称的API它的API表面和它的能力范围相匹配。
对于一个有针对性的类库,像Moment.js,保持API的专注和简单是非常重要的。对于更大和更广阔的类库,API的大小应当能够反映出类库自身的能力。
初看第一眼,它好像一个习以为常的数据源,感觉超出了库本身的基本目的。然而今天网站的装饰都需要动态数据的支持。数据源的引入允许KendoUI可以使用一个稳定,并舒适的范式在整个库范围内来解决远程数据。
让一个API转变为一个名符其实的javascript垃圾抽屉,对于一个库的扩展这是危险的,但对于库来说,这也不是唯一的危险。掉入一个不让你的API伴随着库的成长圈套,或者由于某些人为原因,限制你库的大小,这些同样都是危险的!
另一个扩展性的例子是Backbone的“extend”的函数,我们已经在本文中看到过:
如果你不是一位JavaScript库的编写者,而是一位JavaScript应用开发者或库的实现者,你可能会认为本文中的原则并不适用于你。毕竟,我们大多数人在听到“API”的时候,往往想到的是第三方库,一如我在本文中的示例一样
事实是,API,如同其定义所言,无非就是一个提供给他人利用的隔离功能的接口。现在,让我用一句老话来强调很重要的一点:编写模块化的JS代码是为了实用,使用的次数并不重要。
正如本文中引用的类库,你可以把自己的javascript代码公开接口给其他人。即使你的代码的用户是一小部分或内部团队——甚至你构建自己的一个私有类库——你不必像一个公开类库的作者那样考虑本文中API设计原则和这些原则的实现。利用API设计的好处是即使只针对一个使用者,也要像对数百万使用者一样设计。
因为API的设计代表着对开发者的用户体验,它就像UI设计对于最终用户的重要性一样。正如我们可以通过学习一些原则和参考一些好的或者坏的例子来开发出优秀的UI一样,我们也可以通过同样的方式学习到更好的API设计。应用文中提到的四个原则,以及其他你自己发现的原则,可以帮助你建立出优秀的API,并且让用户得到良好的体验。