我主要用java编写,几乎没有javascript知识 我的问题是javascript是否允许使用API。例如,我有一个javascript应用程序,我希望一些函数像中间件API集一样暴露给它。这个中间件也可以在javascript中。我想划分应用程序和中间件功能。我将实现应用程序和中间件。这是一个有效的用例还是我错误的方式。
答案 0 :(得分:6)
API是一种抽象概念,JavaScript与任何编程语言一样,允许定义和使用API。
要定义API,将公共函数与内部字段和函数明确分开,一种流行的模式是基于module pattern的IIFE。
这是一个示例,您可以在其中查看私有数据,私有函数和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,您还可以定义类。