目录
>我将在一个名为server.js的文件中包含所有我们的节点服务器代码。我们首先需要服务器的必要NPM模块。
>让我们介绍所有这些代码正在做的事情。
>为我们的服务器生成一个私钥
将JAWBONE UP API与Node.js连接,您需要首先在Jawbone的开发人员网站上注册您的申请,以获取客户ID和客户端的秘密。然后,您可以在node.js应用程序中使用“ jawbone-up” npm软件包。该软件包提供了一种简单的方法来验证和向jawbone up api提出请求。
> Jawbone及其服务发生了什么?该公司已过渡到称为Jawbone Health Hub的医疗订阅服务。但是,不再支持Jawbone UP应用程序和API。可用的。使用此API的任何应用都将不再按预期运行。建议切换到替代API以访问健康和健身数据。
>
首页 web前端 js教程 使用Node.js连接到Jawbone UP API

使用Node.js连接到Jawbone UP API

Feb 20, 2025 pm 01:16 PM

使用Node.js连接到Jawbone UP API

作为开发人员,我不禁要访问我的Jawbone对我的大量步骤计数和睡眠习惯数据。有很多数据!因此,我开始研究如何使用Jawbone UP API和Node删除此数据。

>我找到了如何使用Jawbone UP API和节点在网络上使用的示例,但是它们都非常参与其中,并且有很多活动部件以及一些过时的模块(例如Express的较旧版本)。在本文中,我想关注绝对基础知识 - 不必担心将用户数据保存到数据库中,创建帐户或连接社交登录。我们将重点介绍您需要知道的核心内容,以获取节点服务器以使用Jawbone API进行身份验证并返回用户数据。

该演示的所有代码都可以在我们的github repo上提供。

钥匙要点

>使用Jawbone UP API使用Node.js访问诸如步骤计数和睡眠习惯之类的大量用户数据,而无需处理用户数据存储或帐户管理的复杂性。>

首先在Jawbone开发人员网站上设置Jawbone应用程序,以获取必要的凭据,例如客户ID和App Secret,这对于API集成至关重要。

>用Node.js中的OAuth 2.0实现护照模块,以安全地处理用户身份验证和数据检索。
    确保通过HTTPS进行与Jawbone UP API进行的所有通信以满足安全协议并避免数据截距。
  • >使用Node.js中的EJS模板从Web应用程序上的Jawbone UP API中动态显示已检索的睡眠数据。
  • >探索通过从Jawbone UP API集成更多数据类型的更多数据类型,并可能与其他API结合以增强功能。
  • >设置Jawbone应用
  • >我们需要的第一件事是在我们的Jawbone帐户下设置的新Jawbone应用程序。这是用户将授权访问其数据的应用程序。
  • >
  • 首先登录Jawbone站点的开发人员部分,然后访问https://jawbone.com/up/developer,然后单击左下方的“登录”链接。您将不需要特定的Jawbone开发人员帐户,因为它们可以允许您使用现有的Jawbone帐户登录。
  • >登录后,请访问https://jawbone.com/up/developer/account,或单击“帐户”下左手菜单中的“管理帐户”链接。

>在此页面上,您将联系您的开发人员帐户页面。从这里,单击“创建应用”。

在加载的页面上

>您将被提示输入应用程序的详细信息:>

  • >名称 - 您的应用程序的名称,我输入了“ jawbone up node demo”。
  • 描述 - 这是一个简短的描述,将在用户的UP应用程序库中出现。
  • 长描述 - 这是在应用程序画廊的应用程序的详细页面上出现的。
  • >
  • 徽标 - 上传您的应用程序徽标。如果您收到有关“选择”的错误(我知道很奇怪,但是对于少数跟随并收到信息的人来说是有意义的),那么可能是您的徽标图像太大了。
  • >
  • URL - 您的应用程序主页
  • >
  • 授权URL - 您的登录页面的URL。出于我们的测试目的,请在https:// localhost中输入:5000/login/jawbone。
  • >
  • > oauth重定向uris - 允许您的应用程序重定向到用户身份验证后的URL。在我们的演示中,我们将输入https:// localhost:5000。
  • >单击以创建应用程序后,您将使用应用程序列表将您定向到页面。您新创建的应用看起来与我的外观相似:

请注意“客户端ID”和“ App Secret” - 这些是您需要连接到Jawbone API的方法。使用Node.js连接到Jawbone UP API

启动我们的节点应用

>我将在一个名为server.js的文件中包含所有我们的节点服务器代码。我们首先需要服务器的必要NPM模块。

>

首先,我们设置了一个基本的Express App。

然后,我们需要EJS(嵌入式JavaScript),这使我们能够将JavaScript插入我们的HTML模板中。我们将使用它在我们返回的HTML中显示JavaScript变量。 为了能够使用Jawbone API进行身份验证并将其重定向回我们的应用程序,Jawbone要求我们将其重定向到HTTPS上的页面。为此,我们必须包括https。

<span>var express = require(‘express’),
</span>    app <span>= express(),</span>
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
接下来,我们包括FS,它允许我们读取文件系统。我们需要在服务器证书文件中读取以启用HTTPS。

>

ejs <span>= require('ejs'),</span>
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
>我们还需要身体偏好器才能使我们能够处理JSON请求:

https <span>= require('https'),</span>
登录后复制
登录后复制
登录后复制
登录后复制
jawbone UP API使用OAuth 2.0协议进行身份验证。基本上,这意味着要通过用户登录其Jawbone帐户并允许我们访问其数据,我们需要仔细研究此协议。幸运的是,NPM的护照模块包含一个称为Passport-Oauth的模块,该模块支持这一点。我们将Passport与Oauth 2.0一起在应用程序中设置好:

>

然后,我们有一个自我解释变量,该变量存储了我们将要运行的端口。>
fs <span>= require('fs'),</span>
登录后复制
登录后复制
登录后复制
登录后复制
接下来,我们将在Passport和JawboneAuth中存储身份验证所需的所有值。这是您在注册应用时提前注意的“客户端ID”和“ App Secret”值的时刻。

<span>var express = require(‘express’),
</span>    app <span>= express(),</span>
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制

这是这些价值的含义和/或它们来自何处的概述:>

    clientId - 这是您的Jawbone应用程序列出的“客户端ID”。
  • 客户端 - 这是下面的“应用程序秘密”值。>>
  • 授权库 - 这是UP OAuth 2.0身份验证页面的位置,将用户重定向到。
  • Tokenurl - 这是Jawbone UP API中的URL,我们必须调用HTTPS,以请求访问令牌。这个令牌是我们需要将其包含在给Jawbone UP API的电话中,以证明我们有权提出这些数据请求。在Jawbone UP API中,此令牌可以持续一年,因此您可以将其存储在数据库中,并将用户连接到其Jawbone帐户一年,然后才需要重新验证它们。我们不会在本教程中考虑存储用户,但是如果您想进一步推动它,请记住。
  • >。
  • > callbackurl - Jawbone在我们网站上的URL将用户成功地将用户带回他们成功地访问其数据后。对我们来说,这是显示睡眠数据的页面。
  • >我们要定义的最后一个变量是我们的ssloptions,其中包含我们需要提供给服务器的所有详细信息,以便我们使用HTTPS运行此服务器。在解释我们如何设置https时,我将在本文稍后详细介绍所有这些。
  • > 然后,我们包含一些定义一些基本节点应用功能的行,这些app功能将为节点开发人员熟悉:

> BodyParser - 允许我们解析JSON对象。>

>静态文件夹 - 定义了我们的静态文件(如映像)在服务器上的位置(在我们的情况下, /public文件夹)。

> EJS - 分配EJS模块为我们的模板引擎。

视图文件夹 - 定义了我们的EJS视图文件将在服务器上的位置(在我们的情况下, /视图文件夹)。
ejs <span>= require('ejs'),</span>
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
>
  • 为了在Express中初始化Passport,我们运行以下行:>
  • 注意,如果我们想持续登录会话,请在护照中设置更多。在这种情况下,我们需要设置会议。但是,对于本教程,我们将重点关注从Jawbone UP API获取数据的初始阶段,而不必担心登录会话。
  • >
  • 设置我们的获取请求
  • 为了将用户引导到jawbone UP API的登录屏幕,我们需要在服务器上分配一个URL,该URL将重定向到Jawbone登录屏幕。为此,下面的代码分配了 /登录 /jawbone的URL。在获得此URL的请求时,我们致电Passport.Authorize()启动我们的Jawbone UP UP授权页面:
<span>var express = require(‘express’),
</span>    app <span>= express(),</span>
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制

>如上所述,我们有一系列我们要求的特定权限 - [basic_read','sleep_read']。在我们的情况下,我们要求提供基本的用户数据和睡眠数据。如果您想要求访问步骤数,用餐等等,则可以向该阵列添加其他许可请求。您可以在Jawbone UP开发人员身份验证文档页面上查看可用的内容及其提供的访问。

>另外,如果在Jawbone UP身份验证屏幕中进行身份验证失败,它将将我们重定向回主页。在护照模块中也可能设置Scunstallect,但是我发现了Jawbone UP API,不需要,因为我们将在此代码中进一步定义JawboneStrategy中的回调URL。 然后,我们设置了我们的睡眠数据将出现的Get请求。这是我们将告诉API将我们重定向到访问用户数据的位置。在此示例中,它是 /sleepdata:

>

>我们在此处具有相同的Passport.authorize()函数,只是为了检查用户到达此页面时是否已登录。如果是这样,我们运行res.render('userData',req.account);它传递了jawbone UP API返回userData.ejs模板的数据(我们将尽快设置)。如果未登录,它们将被指向jawbone UP身份验证屏幕。

然后,我们设置一个URL以允许用户在 /注销处注销,该网站将用户重定向到主页一旦登录:>
ejs <span>= require('ejs'),</span>
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制

>最后,对于我们的路由,如果有人试图访问主页,我们将其设置为加载index.ejs模板:

使用护照连接到jawbone up api
https <span>= require('https'),</span>
登录后复制
登录后复制
登录后复制
登录后复制

>最大的代码部分也是最重要的 - 建立护照“策略”来告诉Passport如何处理请求以授权使用'Jawbone'。看起来像这样:

fs <span>= require('fs'),</span>
登录后复制
登录后复制
登录后复制
登录后复制

>让我们介绍所有这些代码正在做的事情。

>

首先,我们从我们在文件开头定义的JawboneAuth对象设置了我们的clientID,clientsecret,授权库,tokenurl和callbackurl。这是使用新的JawboneStrategy()。

bodyParser <span>= require('body-parser'),</span>
登录后复制
登录后复制
登录后复制
接下来,我们将拥有处理此数据的回调函数。我们在此回调函数中使用令牌和完成值。令牌是Jawbone UP API访问令牌,我们需要将其与API的任何呼叫一起包括在内,以证明我们已对其进行了身份验证。完成的是将我们的数据返回到应用程序的回调函数。

>

>我们将访问令牌以及前面定义的客户端ID和秘密传递到选项对象中的jawbone-up模块:

>

<span>var express = require(‘express’),
</span>    app <span>= express(),</span>
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制

Jawbone-UP模块是节点模块,它使我们访问Jawbone UP API端点。这些是我们对API返回用户数据的呼叫(例如获取https://jawbone.com/nudge/api/v.1.1/users/@me/sleeps)这些在诸如up.moves.get()和up.sleeps.get()之类的函数中。在我们的示例中,我们将使用up.sleeps.get()获取睡眠数据。

> 在UP.Sleeps.get()中,我们有两个变量,分别是错误和身体。如果从API接收数据时存在错误,则将其返回在ERR变量中,因此我们在回调开始时对此进行测试。

>

>否则,我们将数据返回到身体变量中的JSON字符串中。车身变量将包含一个看起来像这样的值的json字符串:

>

ejs <span>= require('ejs'),</span>
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
我们想要的一切都在数据中。 我们使用json.parse(body)将上面的值解析到JavaScript对象中,并将数据键中的值分配给一个称为JawboneData的变量:>

然后,我们有一个用于循环的循环,可以通过数据中的每个项目,并格式化我们的日期和睡眠时间,然后再将它们返回我们的模板以显示。

https <span>= require('https'),</span>
登录后复制
登录后复制
登录后复制
登录后复制
在这里,我们在日期中阅读,将其转换为字符串,然后将我们自己分开。它作为20150408的价值返回,因此我们将前四位数字归为一年,在那个月之后的两个数字,而最后两个人则是一天。然后,我们安排它,以便它将是DD/mm/yyyy,如果您希望以美国日期格式格式化,则可以切换一个月:

>

fs <span>= require('fs'),</span>
登录后复制
登录后复制
登录后复制
登录后复制
jawbone api返回一个相对良好格式的睡眠持续时间值,就像这样的标题:“对于9h 43m”。我们可以使用它,但要删除“ for”部分,例如:

>

然后,我们将数据返回到我们的护照的回调功能,该回调功能将呈现我们的userData.ejs。为此,我们将JawboneData变量返回到完成的功能。还有一个控制台。log只是为了显示显示jawbone up数据以显示以下显示:>>>>
bodyParser <span>= require('body-parser'),</span>
登录后复制
登录后复制
登录后复制

使用https

正如我之前提到的,为了使用Jawbone UP API,我们需要使用HTTPS运行服务器,因为Jawbone的服务要求双方运行HTTPS。如果未设置为https的callbackurl,当您尝试登录时,您将收到“无效的重定向”错误。
passport <span>= require('passport'),
</span><span>JawboneStrategy = require('passport-oauth').<span>OAuth2Strategy</span>,</span>
登录后复制
为了使我们的示例工作,我们将使用自签名的证书。如果您在实时网站上进行此操作,则需要从有效的证书授权书中获得适当的证书。

>在server.js中,我们定义了两个SSL选项:>

port <span>= 5000,</span>
登录后复制
这些是我们两个与身份验证相关的文件的服务器上的文件位置:>
  • 键 - 这是我们服务器的私钥
  • >
  • 证书 - 这是我们的自我签名证书
  • >

>为我们的服务器生成一个私钥

为了生成一个私钥,我们需要使用OpenSSL工具包。 MAC OSX和Linux用户应该已预装。对于Windows用户,您可以安装Cygwin,在“选择软件包”屏幕上搜索“ OpenSSL”,然后选择出现的软件包。

>我们可以通过打开终端,导航到服务器的文件夹并运行以下命令来生成该私钥:>

这将生成一个专用服务器密钥,准备使用称为server.key。

<span>var express = require(‘express’),
</span>    app <span>= express(),</span>
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
生成证书签名请求(CSR)

然后,我们需要生成CSR。这通常会被发送给证书授权,但在我们的情况下,我们将自己签署以进行测试目的。

>要使用上面创建的私钥生成CSR,请运行以下命令:>

>您将获得一个问题列表以回答,回答这些问题,您将收到CSR作为一个名为server.csr。

的文件。

使用我们的服务器私钥

生成签名的证书
ejs <span>= require('ejs'),</span>
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
>最后,要生成一个没有证书授权的自签名证书,我们运行以下命令,以生成一年有效的证书:

该命令应该已经生成了一个server.crt文件 - 这是您的证书。

删除我们的证书请求

对于那些喜欢保持整洁和自我签名证书的人,我们可以删除server.csr。
https <span>= require('https'),</span>
登录后复制
登录后复制
登录后复制
登录后复制
我们是https就绪

>使用我们的私钥和证书准备并在我们的节点文件中定义,我们的服务器可以作为HTTPS运行。以下代码使用https和我们的ssloptions启动了服务器:>

我们的EJS文件

该应用程序的HTML都在.ejs文件中,因此我们可以在需要时在其中包含JavaScript变量。这些文件都在 /视图中。 index.ejs非常简单,只包含一个标题,说明和登录按钮,该按钮将转到 /登录 /jawbone:

> userdata.ejs是操作所在的地方。我们可以关注的主要位置是我们的桌子:

对于EJ的新手,我们将JavaScript嵌入标签中。 我们将项目传递给UserData模板,我们通过使用for for so to to s o:。 然后,使用和将每个日期和标题插入我们的HTML。
fs <span>= require('fs'),</span>
登录后复制
登录后复制
登录后复制
登录后复制
我们的应用程序在行动

>要运行应用程序,前往您的终端并运行:>

>运行它,请访问http:// localhost:5000,您会看到我们的初始页面:
bodyParser <span>= require('body-parser'),</span>
登录后复制
登录后复制
登录后复制

如果我们单击“登录”按钮,我们将被带到http:// localhost:5000/login/jawbone,这将引导我们进入Jawbone UP Authentication Page。该页面将提示我们获取Jawbone登录详细信息。输入这些详细信息后,或者您已经登录了Jawbone站点,您将被指示到验证页面,要求访问用户数据。单击“同意”:
使用Node.js连接到Jawbone UP API

>

当我们单击同意时,我们应该将其定向到http:// localhost:5000/sleepdata页面,带有我们的睡眠数据表:
使用Node.js连接到Jawbone UP API

>,如果我们单击“注销”按钮,它应该登录我们并将我们重定向回主页。

结论

>完成了我们连接到Jawbone UP API并将数据返回到节点服务器的基础的概述。>

>从这里开始的下一步可能包括设置数据库以存储数据以备将来使用,为应用程序创建用户帐户,扩展您从UP API中获取的数据量,更改其显示的方式(也许添加了一些漂亮的图!)等等。将这些数据与许多其他API结合在一起,并且某些真正整洁的应用程序的可能性很大!>

其他有用的资源

节点 - jawbone-up模块的文档

jawbone开发人员文档
    PASSPORT的文档
  • 带有用户帐户和mongodb
  • 的UP和节点演示
  • 经常询问有关将jawbone UP API与node.js >什么是Jawbone UP API,它是如何工作的?
  • > jawbone UP API是Jawbone提供的一组编程接口,允许开发人员与Jawbone up数据进行交互。它可以从Jawbone UP平台中提取数据,其中包括用户的活动,睡眠,餐和其他与健康相关的数据。 API使用RESTFUL的呼叫和响应在JSON中格式化。

>如何将Jawbone UP API连接到Node.js?

将JAWBONE UP API与Node.js连接,您需要首先在Jawbone的开发人员网站上注册您的申请,以获取客户ID和客户端的秘密。然后,您可以在node.js应用程序中使用“ jawbone-up” npm软件包。该软件包提供了一种简单的方法来验证和向jawbone up api提出请求。

>由于jawbone停止了服务,您可能想考虑使用Jawbone UP API的替代方法?诸如Fitbit API,Google Fit API或Apple HealthKit之类的替代方案。这些API还提供了访问用户的健康和健身数据的访问权限,并提供了广泛的文档来帮助开发人员。

> Jawbone及其服务发生了什么?该公司已过渡到称为Jawbone Health Hub的医疗订阅服务。但是,不再支持Jawbone UP应用程序和API。可用的。使用此API的任何应用都将不再按预期运行。建议切换到替代API以访问健康和健身数据。

>

>如何从Jawbone UP API迁移到Fitbit API?

>从Jawbone UP API迁移到Fitbit API涉及几步。首先,您需要在Fitbit的开发人员网站上注册您的应用程序。然后,您可以使用Fitbit API访问用户的健康和健身数据。 FITBIT API提供了与Jawbone UP API相似的功能,包括访问活动,睡眠和餐数据。

>

什么是node.js,为什么它用于与APIS连接? Node.js是基于Chrome的V8 JavaScript引擎的JavaScript运行时。它用于构建可扩展网络应用程序。 Node.js是非阻滞,它使其高效且轻巧,非常适合数据密集型实时应用程序。由于其效率和易用性,通常用于与API连接。

>

>在使用node.js? ​​连接到带有节点的API时,我该如何处理错误.js,您可以使用“错误”事件处理错误。每当请求期间发生错误时,就会发出此事件。您可以聆听此事件并适当处理错误,例如记录错误或重试请求。

>

我可以使用Fitness Tracker API访问哪些数据?访问一系列健康和健身数据。这包括活动数据(如台阶,距离和燃烧的卡路里),睡眠数据(例如睡眠时间和睡眠质量)以及进餐数据(例如食物摄入和营养信息)。可用的确切数据取决于特定的API和用户授予的权限。

>

>在使用健身跟踪器API时如何确保用户数据的隐私和安全性? API,重要的是要遵循数据隐私和安全性的最佳实践。这包括在访问数据之前,使用安全连接(HTTP)在所有请求中获得用户同意,安全地存储用户数据,并仅请求您的应用程序所需的最小数据。

以上是使用Node.js连接到Jawbone UP API的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

前端热敏纸小票打印遇到乱码问题怎么办? 前端热敏纸小票打印遇到乱码问题怎么办? Apr 04, 2025 pm 02:42 PM

前端热敏纸小票打印的常见问题与解决方案在前端开发中,小票打印是一个常见的需求。然而,很多开发者在实...

神秘的JavaScript:它的作用以及为什么重要 神秘的JavaScript:它的作用以及为什么重要 Apr 09, 2025 am 12:07 AM

JavaScript是现代Web开发的基石,它的主要功能包括事件驱动编程、动态内容生成和异步编程。1)事件驱动编程允许网页根据用户操作动态变化。2)动态内容生成使得页面内容可以根据条件调整。3)异步编程确保用户界面不被阻塞。JavaScript广泛应用于网页交互、单页面应用和服务器端开发,极大地提升了用户体验和跨平台开发的灵活性。

谁得到更多的Python或JavaScript? 谁得到更多的Python或JavaScript? Apr 04, 2025 am 12:09 AM

Python和JavaScript开发者的薪资没有绝对的高低,具体取决于技能和行业需求。1.Python在数据科学和机器学习领域可能薪资更高。2.JavaScript在前端和全栈开发中需求大,薪资也可观。3.影响因素包括经验、地理位置、公司规模和特定技能。

如何使用JavaScript将具有相同ID的数组元素合并到一个对象中? 如何使用JavaScript将具有相同ID的数组元素合并到一个对象中? Apr 04, 2025 pm 05:09 PM

如何在JavaScript中将具有相同ID的数组元素合并到一个对象中?在处理数据时,我们常常会遇到需要将具有相同ID�...

JavaScript难以学习吗? JavaScript难以学习吗? Apr 03, 2025 am 12:20 AM

学习JavaScript不难,但有挑战。1)理解基础概念如变量、数据类型、函数等。2)掌握异步编程,通过事件循环实现。3)使用DOM操作和Promise处理异步请求。4)避免常见错误,使用调试技巧。5)优化性能,遵循最佳实践。

如何实现视差滚动和元素动画效果,像资生堂官网那样?
或者:
怎样才能像资生堂官网一样,实现页面滚动伴随的动画效果? 如何实现视差滚动和元素动画效果,像资生堂官网那样? 或者: 怎样才能像资生堂官网一样,实现页面滚动伴随的动画效果? Apr 04, 2025 pm 05:36 PM

实现视差滚动和元素动画效果的探讨本文将探讨如何实现类似资生堂官网(https://www.shiseido.co.jp/sb/wonderland/)中�...

JavaScript的演变:当前的趋势和未来前景 JavaScript的演变:当前的趋势和未来前景 Apr 10, 2025 am 09:33 AM

JavaScript的最新趋势包括TypeScript的崛起、现代框架和库的流行以及WebAssembly的应用。未来前景涵盖更强大的类型系统、服务器端JavaScript的发展、人工智能和机器学习的扩展以及物联网和边缘计算的潜力。

console.log输出结果差异:两次调用为何不同? console.log输出结果差异:两次调用为何不同? Apr 04, 2025 pm 05:12 PM

深入探讨console.log输出差异的根源本文将分析一段代码中console.log函数输出结果的差异,并解释其背后的原因。�...

See all articles