Electron - 从视图调用函数

Shi*_*wal 3 atom-editor electron

您好,我是电子新手,我遇到了一个问题,我想在单击按钮上执行一个命令,因为我正在使用节点的 child_process。我已经为 app.on('ready') 编写了一个代码并且它工作正常。但我需要它点击下面是我的代码请帮助..

function runExec() {
 child_process.exec('pwd', function(error, stdout, stderr){
  if(!error){
   console.log(stdout);
   setTimeout(function(){
    child_process.exec('ls -la', function(error, stdout, stderr){
      console.log(stdout);
    });
    }, 3000);
   }
 });
}
Run Code Online (Sandbox Code Playgroud)

我想在单击时使用 jquery/index.html 运行此函数 HTML 代码在这里:

<div class="col-sm-12 controls">
  <a id="btn-login" href="#" class="btn btn-success btnLogin">Login </a>
</div>
Run Code Online (Sandbox Code Playgroud)

当我点击登录按钮点击 API 并获得响应时,我也想在相同的点击或真实响应中调用该函数..

任何的想法..

提前致谢 :)

小智 5

那么,它在您的主进程中工作,但您想在有人单击渲染器进程中的按钮时触发它吗?

您需要做的是导出主进程中的功能,然后使用 Electron 的remote模块将其拉入渲染器进程。

在您的主流程中,添加以下代码:

exports.runExec = runExec;
Run Code Online (Sandbox Code Playgroud)

这将您的导出runExec功能runExecremote,当你导入对象。

现在,在您的渲染器代码中(我假设您的主文件名为main.js,但它可能被命名为其他名称,这完全没问题,只需替换./main为您的文件名在第二行):

var electron = require('electron');
var runExec = electron.remote.require('./main').runExec;

var loginButton = document.querySelector('. btnLogin');

loginButton.addEventListener('click', function () {
  runExec();
});
Run Code Online (Sandbox Code Playgroud)

Electron 的remote模块充当主进程的代理。因此,当有人单击“登录”按钮时,您的渲染器进程将从runExec主进程触发该功能。