Electron 调用命令行(cmd)


Posted in Javascript onSeptember 23, 2019

因为最近的项目需求,需要在 Electron 客户端启动的时候启动 nginx 服务,所以研究了一下怎么在 Electron 调用 命令行。 因为 Electron 基于 Chromium 和 Node.js,可以直接使用 Node.js 的 API 和一些包。目前研究有以下两种方法:

child_process

child_process 是 Node.js 的内置模块,该模块提供了衍生子进程的能力。

实现代码:

const exec = require('child_process').exec
export function start () {
 // 任何你期望执行的cmd命令,ls都可以
 let cmdStr1 = 'your command code'
 let cmdPath = './file/'
 // 子进程名称
 let workerProcess
 runExec(cmdStr1)
 function runExec (cmdStr) {
  workerProcess = exec(cmdStr, { cwd: cmdPath })
  // 打印正常的后台可执行程序输出
  workerProcess.stdout.on('data', function (data) {
   console.log('stdout: ' + data)
  })
  // 打印错误的后台可执行程序输出
  workerProcess.stderr.on('data', function (data) {
   console.log('stderr: ' + data)
  })
  // 退出之后的输出
  workerProcess.on('close', function (code) {
   console.log('out code:' + code)
  })
 }
}

node-cmd

node-cmd 是 一个让 Node.js 调用命令行的包。

首先我们需要安装:

npm install node-cmd --save

实现代码:

var cmd=require('node-cmd');
 
  cmd.get(
    'pwd',
    function(err, data, stderr){
      console.log('the current working dir is : ',data)
    }
  );
 
  cmd.run('touch example.created.file');
 
  cmd.get(
    'ls',
    function(err, data, stderr){
      console.log('the current dir contains these files :\n\n',data)
    }
  );
 
  cmd.get(
    `
      git clone https://github.com/RIAEvangelist/node-cmd.git
      cd node-cmd
      ls
    `,
    function(err, data, stderr){
      if (!err) {
        console.log('the node-cmd cloned dir contains these files :\n\n',data)
      } else {
        console.log('error', err)
      }
 
    }
  );

以上就是两种在 Electron 中调用命令行的方法,其实都是借助了 Node.js的能力。

他们两者的区别是 child_process 可以指定命令执行的路径,默认项目根目录;而 node-cmd 不能指定执行路径,只能自己 cd 到目标路径。

我是使用的 child_process,具体使用场景还需要根据自己的需求来。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript Date对象 日期获取函数
Dec 19 Javascript
关于JS管理作用域的问题
Apr 10 Javascript
jquery实现带复选框的表格行选中删除时高亮显示
Aug 01 Javascript
jquery设置text的值示例(设置文本框 DIV 表单值)
Jan 06 Javascript
node.js中的events.emitter.removeAllListeners方法使用说明
Dec 10 Javascript
jQuery关键词说明插件cluetip使用指南
Apr 21 Javascript
javascript对象的相关操作小结
May 16 Javascript
原生js实现秒表计时器功能
Feb 16 Javascript
Vuejs中使用markdown服务器端渲染的示例
Nov 22 Javascript
JavaScript基于面向对象实现的猜拳游戏
Jan 03 Javascript
利用CDN加速react webpack打包后的文件详解
Feb 22 Javascript
JavaScript实现打砖块游戏
Feb 25 Javascript
layui文件上传控件带更改后数据传值的方法
Sep 23 #Javascript
原生JavaScript实现日历功能代码实例(无引用Jq)
Sep 23 #Javascript
小程序实现上下移动切换位置
Sep 23 #Javascript
微信小程序分包加载代码实现方法详解
Sep 23 #Javascript
layui扩展上传组件模拟进度条的方法
Sep 23 #Javascript
layer扩展打开/关闭动画的方法
Sep 23 #Javascript
layui字体图标 loading图标静止不旋转的解决方法
Sep 23 #Javascript
You might like
windows下开发并编译PHP扩展的方法
2011/03/18 PHP
浅谈php serialize()与unserialize()的用法
2013/06/05 PHP
thinkphp框架实现删除和批量删除
2016/06/29 PHP
PHP实现在windows下配置sendmail并通过mail()函数发送邮件的方法
2017/06/20 PHP
jQuery仿Excel表格编辑功能的实现代码
2013/05/01 Javascript
Jquery读取URL参数小例子
2013/08/30 Javascript
JQuery获取或设置ckeditor的数据(示例代码)
2013/11/15 Javascript
js调出上下文菜单的实例
2015/12/17 Javascript
Bootstrap3 模态框使用实例
2017/02/22 Javascript
jQuery使用正则验证15/18身份证的方法示例
2017/04/27 jQuery
nodejs处理图片的中间件node-images详解
2017/05/08 NodeJs
JS实现导出Excel的五种方法详解【附源码下载】
2018/03/15 Javascript
vue.js打包之后可能会遇到的坑!
2018/06/03 Javascript
基于vue实现可搜索下拉框定制组件
2020/03/26 Javascript
Vue自定义全局弹窗组件操作
2020/08/11 Javascript
[43:57]LGD vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
[00:57]英雄,你的补给到了!
2020/11/13 DOTA
Python中列表、字典、元组、集合数据结构整理
2014/11/20 Python
Python通过Pygame绘制移动的矩形实例代码
2018/01/03 Python
Python实现动态添加属性和方法操作示例
2018/07/25 Python
详解Python下Flask-ApScheduler快速指南
2018/11/04 Python
详解Python字典的操作
2019/03/04 Python
Python JSON格式数据的提取和保存的实现
2019/03/22 Python
Django实现发送邮件功能
2019/07/18 Python
python类的实例化问题解决
2019/08/31 Python
Pandas —— resample()重采样和asfreq()频度转换方式
2020/02/26 Python
上海方立数码笔试题
2013/10/18 面试题
给同学的道歉信
2014/01/16 职场文书
优秀毕业生自我鉴定
2014/02/11 职场文书
维稳工作情况汇报
2014/10/27 职场文书
2014年大学宣传部工作总结
2014/12/19 职场文书
八年级历史教学反思
2016/02/19 职场文书
Ajax常用封装库——Axios的使用
2021/05/08 Javascript
pytorch 如何使用float64训练
2021/05/24 Python
新手必备Python开发环境搭建教程
2021/05/28 Python
vue里使用create, mounted调用方法
2022/04/26 Vue.js