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

标签 javascript api

我主要用 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/

相关文章:

javascript - 是否有适用于 iPad 和 PC 的 javascript 拖放

api - Magento Enterprise 1.12 - 从 V2 API 访问客户自定义属性

javascript - 如何使用 javascript 的 fetch 方法捕获 401 错误

Python C API - 使用比较函数导致 'Segmentation fault'

javascript - 如何使用 WSO2 API 管理器为我们自己的数据库创建 API

javascript - "code unit value"在 ECMA-262(JavaScript 5 版本)中意味着什么?

php - 使用 window.location 重定向发送 $_SESSION 变量

javascript - 尽管有正确的预设/插件,但 Babel 在 async/await 语法上抛出错误

javascript - 使用 javascript 进行域查找

ruby-on-rails - 无法加载此类文件——rails 3.2.3 中的 lib/api grape