我主要用java编程,几乎没有javascript知识。
我的问题是 javascript 是否允许使用 API。例如,我有一个 javascript 应用程序,我希望像中间件 API 集一样向它公开一些函数。这个中间件也可以在 javascript 中。我想划分应用程序和中间件功能。我将同时实现应用程序和中间件。这是一个有效的用例还是我用错了方法。
问问题
81 次
1 回答
6
API 是一个抽象概念,JavaScript 与任何编程语言一样,允许定义和使用 API。
为了定义 API,将公共函数与内部字段和函数明确分离,一种流行的模式是基于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);
这具有启用缩小器以减少window
名称的次要优势,它还允许库分配多个名称(例如“jQuery”和“$”)。
这个例子还展示了另一个有用的模式的前提,命名空间:让事情变得清晰的一个重要部分是定义专用的命名空间,它是使用属性构建的:
myLib = myLib || {};
myLib.mySubLib1 = (function(){
...
})();
myLib
在这里,许多文件可以具有相同的模式:如果不存在,它们都将在第一行初始化。
您通常会结合这些模式来构建具有最小冲突风险(即不定义全局变量)并且不会暴露太多内部结构的美观库,以便您可以使实现不断发展。
对于更复杂的 API,您还可以定义类。
于 2013-04-03T07:23:04.087 回答