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 相关文章推荐
jquery 获取json数据实现代码
Apr 27 Javascript
IE8 下的Js错误HTML Parsing Error...
Aug 14 Javascript
setInterval()和setTimeout()的用法和区别示例介绍
Nov 17 Javascript
node.js中的fs.stat方法使用说明
Dec 16 Javascript
从重置input file标签中看jQuery的 .val() 和 .attr(“value”) 区别
Jun 12 Javascript
vue绑定设置属性的多种方式(5)
Aug 16 Javascript
原生js的ajax和解决跨域的jsonp(实例讲解)
Oct 16 Javascript
js实现京东秒杀倒计时功能
Jan 21 Javascript
vue中使用props传值的方法
May 08 Javascript
Node.JS发送http请求批量检查文件中的网页地址、服务是否有效可用
Nov 20 Javascript
使用JavaScript获取扫码枪扫描得到的条形码的思路代码详解
Jun 10 Javascript
在Vuex中Mutations修改状态操作
Jul 24 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
php中apc缓存使用示例
2013/12/25 PHP
将PHP程序中返回的JSON格式数据用gzip压缩输出的方法
2016/03/03 PHP
PHP中的empty、isset、isnull的区别与使用实例
2019/03/22 PHP
PHP执行普通shell命令流程解析
2020/08/24 PHP
[原创]网络复制内容时常用的正则+editplus
2006/11/30 Javascript
(转载)JavaScript中匿名函数,函数直接量和闭包
2007/05/08 Javascript
动态添加js事件实现代码
2009/03/12 Javascript
最简单的jQuery程序 入门者学习
2009/07/09 Javascript
学习ExtJS Column布局
2009/10/08 Javascript
JQuery autocomplete 使用手册
2010/04/01 Javascript
关于js日期转化为毫秒数“节省20%的效率和和节省9个字符“问题
2012/03/01 Javascript
弹出最简单的模式化遮罩层的js代码
2013/12/04 Javascript
jQuery网页右侧广告跟随滚动代码分享
2020/04/20 Javascript
跟我学习javascript的垃圾回收机制与内存管理
2015/11/23 Javascript
js实现对ajax请求面向对象的封装
2016/01/08 Javascript
Javascript基础学习笔记(菜鸟必看篇)
2016/07/22 Javascript
JS中动态创建元素的三种方法总结(推荐)
2016/10/20 Javascript
js return返回多个值,通过对象的属性访问方法
2017/02/21 Javascript
JS实现微信摇一摇原理解析
2017/07/22 Javascript
node内置调试方法总结
2018/02/22 Javascript
python根据文件大小打log日志
2014/10/09 Python
Python : turtle色彩控制实例详解
2020/01/19 Python
Python日志器使用方法及原理解析
2020/09/27 Python
前端实现打印图像功能
2019/08/27 HTML / CSS
Huda Beauty官方商店:化妆和美容产品
2020/09/05 全球购物
医科学校毕业生自荐信
2013/11/09 职场文书
二手书店创业计划书
2014/01/16 职场文书
xxx同志考察材料
2014/02/07 职场文书
教师节促销方案
2014/03/22 职场文书
四风剖析查摆对照检查材料思想汇报
2014/09/24 职场文书
教师节标语大全
2014/10/07 职场文书
中学生旷课检讨书500字
2014/10/29 职场文书
2015年初一班主任工作总结
2015/05/13 职场文书
使用CSS3实现按钮悬停闪烁动态特效代码
2021/08/30 HTML / CSS
mysql分组后合并显示一个字段的多条数据方式
2022/01/22 MySQL
MySQL优化之慢日志查询
2022/06/10 MySQL