javascript是否有像API这样的概念

时间:2013-04-03 07:21:23

标签: javascript api

我主要用java编写,几乎没有javascript知识 我的问题是javascript是否允许使用API​​。例如,我有一个javascript应用程序,我希望一些函数像中间件API集一样暴露给它。这个中间件也可以在javascript中。我想划分应用程序和中间件功能。我将实现应用程序和中间件。这是一个有效的用例还是我错误的方式。

1 个答案:

答案 0 :(得分:6)

API是一种抽象概念,JavaScript与任何编程语言一样,允许定义和使用API​​。

要定义API,将公共函数与内部字段和函数明确分开,一种流行的模式是基于module patternIIFE

这是一个示例,您可以在其中查看私有数据,私有函数和3个公共函数。

var countLib = (function(){
   var count = 0;
   var add = function(a) { count += a };
   return {
        getCount : function() { return count },
        increment : function() { add(1) },
        decrement : function() { add(-1) }
   }
})();

它允许你做

countLib.increment();
var count = countLib.getCount(); // gets 1

count内部值和add功能未公开。

此模式用于许多流行的库中。 jQuery中使用的常见变体允许库在上下文中分配自己:

(function(window){
   var count = 0;
   var add = function(a) { count += a };
   window.countLib = {
        getCount : function() { return count },
        increment : function() { add(1) },
        decrement : function() { add(-1) }
   }
})(window);

这有一个小优势,即使minifiers能够减少window名称,并且它还允许库分配多个名称(例如“jQuery”和“$”)。

此示例还显示了另一个有用模式的前提,即命名空间:明确的一个重要部分是定义专用名称空间,它们是使用属性构建的:

 myLib = myLib || {};
 myLib.mySubLib1 = (function(){
      ...
 })();

在这里,许多文件可以具有相同的模式:如果不存在,所有文件都会在第一行初始化myLib

您通常会将这些模式组合在一起,构建一个外观漂亮的库,并且具有最小的冲突风险(即无需定义全局变量),并且不会暴露太多内部因素,以便您可以进行实施。

对于更复杂的API,您还可以定义类。