gpt4 book ai didi

javascript - javascript有没有像API这样的概念

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:50:10 24 4
gpt4 key购买 nike

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

最佳答案

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

要定义 API,将公共(public)函数与内部字段和函数明确分开,流行的模式是 module pattern基于 IIFE .

这是一个示例,您可以在其中看到私有(private)数据、一个私有(private)函数和 3 个公共(public)函数。

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,您还可以定义类。

关于javascript - javascript有没有像API这样的概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15781187/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com