如何在 Swift 中从 npm 运行 Node JS 代码

dea*_*904 5 javascript cocoa node.js npm swift

我正在制作一个 Cocoa 应用程序并想调用npm从 Swift下载的 Node JS 包。

我不知道是否可能,但我在互联网上找不到任何东西。我可以npm从 Swift调用包吗?

虽然它需要 Node 被运送或在运行应用程序的用户的计算机上,但我不介意。但这能做到吗?

还是我必须在 Swift 中编写相同的 Node 代码?

小智 7

这是一个很好的问题。我将尝试向您概述这些不同系统的工作原理以及理论上但相当痛苦的解决方案。Swift 在移动端运行,并以更底层的方法管理其资源。

另一方面,Javascript 是一种通用语言,需要一个“理解”javascript 的虚拟机 (VM),才能嵌入到您的目标系统中。值得庆幸的是,iOS 已经通过javascriptcore接口做到了这一点。有了它,您可以加载 Javascript 包并评估其中的任何函数。

理论上,你的建议会像这样工作:

  1. 找到您要运行的软件包的捆绑版本

  2. 使用 JavaScriptCore 接口将其加载到 javascript VM 上

  3. 评估包的功能

看看这个很棒的指南

这种方法的一个重要警告是 npm 包的平台特定调用(例如 Node.js 的fs包不存在)。

如果是这种情况,那么您应该使用远程服务来运行 cenk 建议的代码。