Macos 我可以使用OSX本机API';电子中的s

Macos 我可以使用OSX本机API';电子中的s,macos,cross-platform,electron,Macos,Cross Platform,Electron,有没有一种方法可以使用OSX原生API的使用。假设我想使用,有没有办法使用本机OSX API的强大功能 谢谢我知道这是一个迟来的答案,但您有一些选择: > P>允许您用C++和ObjectiveC(或Swift)编写,并使用V8将API暴露到NoDE.js。这给了您很大的灵活性和能力,但需要花费最多的时间来开发 是一个本机节点模块,允许您与ObjC运行时交互。我从未使用过它,但它似乎是一个可靠的项目,可以简化您试图做的任何事情。另一个类似的选择是。不过,您引用的框架看起来像一个OBJCAPI

有没有一种方法可以使用OSX原生API的使用。假设我想使用,有没有办法使用本机OSX API的强大功能


谢谢

我知道这是一个迟来的答案,但您有一些选择:

    > P>允许您用C++和ObjectiveC(或Swift)编写,并使用V8将API暴露到NoDE.js。这给了您很大的灵活性和能力,但需要花费最多的时间来开发

  • 是一个本机节点模块,允许您与ObjC运行时交互。我从未使用过它,但它似乎是一个可靠的项目,可以简化您试图做的任何事情。另一个类似的选择是。不过,您引用的框架看起来像一个OBJCAPI,所以不确定它是否适用于您的特定用例

  • 对于简单的东西,你可以使用。我只玩过一点applescript,但我对你能用它做的一些事情感到惊讶。例如,您可以使用它将应用程序设置为在登录时启动(请参阅)。虽然与上面的方法相比有一定的局限性,但是如果它能满足您的需要,那么它就更简单,并且不需要编译,这很好。请注意,这将在后台生成一个新进程来运行applescript。这可能对你想做的事情有一些影响。

  • 如果OSX API 您尝试使用的是一个良好的CLI。这里的优点是简单,缺点是您可能必须将它输出的字符串解析为有意义的数据结构,根据我的经验,这可能有点困难


您还可以使用
子进程的exec功能执行应用程序中的脚本或终端命令

您还可以轻松检查您的应用程序在哪个平台上运行:

var isWin = /^win/.test(process.platform);
  if(isWin){
    //windows
  }else{
    //macos
  }
您还可以在构建OSX应用程序后,在swift中执行为使用OSX本机API的OSX应用程序创建的脚本:

 exec(path.join(__dirname, './build-scripts/Network -agr1 ' + value1 + ' -agr2 ' + value2),
      function (error, stdout, stderr) {
        console.log('stdout: ' + stdout);
        console.log('stderr: ' + stderr);
        if (error !== null) {
          console.log("Fail to execute script"+ error);
        } else {
          console.log("ok")
        }
      }); 

您还可以使用直接从javascript调用本机库。

挑剔(抱歉)..
process.platform
只能返回:
darwin
freebsd
linux
sunos
win32
。因此,检查windows就像检查process.platform==“win32”
一样简单。看到节点ffi可以从electron JS使用吗?是的,你可以。但这可能相当复杂,但会奏效。您必须记住,它只能在osx上工作,并且在其他系统上有依赖于平台的解决方案。如果它们不同的话,您还必须为Electronics版本而不是本地nodejs版本构建它。就像一个本地模块。你的第一个要点提到Objective和swift。。。如何将本机模块与swift结合使用?我只看到了对C++@CamHart的支持,嗯,我还以为有人用过Swift呢。看来有办法通过?似乎也能做到这一点