JavaScript API开发的良好实践

时间:2011-01-24 00:04:00

标签: javascript api-design

设计JavaScript API有什么好方法?

我对JavaScript相对较新,并且学习了该语言的主要优点,主要来自“JavaScript:The Good Parts”。目前,我正在设计一个基于网络的工具来教授统计数据。代码库变得越来越难以部分,因为我不了解如何设计JavaScript API。

我的背景是Java和C ++,用于设计接口,然后独立实现这些接口。显然,这在JavaScript中效果不佳。

感谢您提供任何帮助和建议。

更新:此处工具的最终版本:http://www.lock5stat.com/statkey/index.html

3 个答案:

答案 0 :(得分:2)

John Resig has a scathing critique of the NodeIterator API.虽然这是对一个特定API的回顾,但它提供了一些见解(至少他认为)是一个好工具。

答案 1 :(得分:2)

在我看来,如果您使用的是jQuery,最好的解决方案是将您的应用程序划分为jQuery插件和UI小部件。插件是组织代码的好方法,您可以在其他应用程序中重用它们,也可以单独发布它们。

您可以将应用程序编写为插件树。您可以考虑使用聚合但不是继承的C ++ / Java类中的插件。

关于代码的注释:在使用document.createElement的MAIN.bootstrapPlot函数中,您应该像在其余代码中一样使用jQuery,并检查Canto library是否为Canvas。

答案 2 :(得分:1)

我认为它与开发任何API无关,无论语言如何,请记住语言功能。

  1. 正如您所指出的那样,界面在javascript中没有多大意义,但它是面向对象的,因此您可以将功能划分为“类”,使用设计模式等。

  2. 文档。您可以像记录任何API一样记录javascript“类”。

  3. 即使js中没有对接口或抽象类的本机支持,您仍然可以强制执行这些原则。例如,您可以通过使用抛出错误的方法定义对象来创建“抽象类”,这样,如果子类未正确实现,则子类将会出错。任何使用接口的东西都可以做一个简单的检查,看看init上是否有必要的方法。请注意,有些js人会对此不以为然,指出js是松散类型和动态的,应该以这种方式使用。

  4. 请注意,我将'class'放在引号中,因为javascript没有这样的概念。您可以做的另一件事是查看现有的API,如Sencha或jQuery,以获得一些想法。 Sencha感觉就像服务器端开发人员习惯的API(查看他们的文档)。