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 Event学习第三章 早期的事件处理程序
Feb 07 Javascript
使用jQuery的将桌面应用程序引入浏览器
Nov 19 Javascript
js格式化货币数据实现代码
Sep 04 Javascript
javascript获取url上某个参数的方法
Nov 08 Javascript
Thinkphp模板没有解析直接原样输出的解决方法
Oct 31 Javascript
javascript中函数作为参数调用的方法
Feb 09 Javascript
使用Browserify配合jQuery进行编程的超级指南
Jul 28 Javascript
微信小程序数据存储与取值详解
Jan 30 Javascript
Vue 应用中结合vux使用微信 jssdk的方法
Aug 28 Javascript
基于 jQuery 实现键盘事件监听控件
Apr 04 jQuery
Vue2.0 $set()的正确使用详解
Jul 28 Javascript
javascript解析json格式的数据方法详解
Aug 07 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自动反斜杠的函数代码
2010/01/05 PHP
PHP5中GD库生成图形验证码(有汉字)
2013/07/28 PHP
php进程间通讯实例分析
2016/07/11 PHP
mysql alter table命令修改表结构实例详解
2016/09/24 PHP
php 使用ActiveMQ发送消息,与处理消息操作示例
2020/02/23 PHP
jquery动画3.创建一个带遮罩效果的图片走廊
2012/08/24 Javascript
下拉列表选择项的选中在不同浏览器中的兼容性问题探讨
2013/09/18 Javascript
AngularJs 60分钟入门基础教程
2016/04/03 Javascript
jQuery 实现鼠标画框并对框内数据选中的实例代码
2017/08/29 jQuery
vue 过滤器filter实例详解
2018/03/14 Javascript
Node.js使用Angular简单示例
2018/05/11 Javascript
JavaScript实现五子棋游戏的方法详解
2019/07/08 Javascript
layui使用数据表格实现购物车功能
2019/07/26 Javascript
微信小程序实现简单文字跑马灯
2020/05/26 Javascript
VUE项目axios请求头更改Content-Type操作
2020/07/24 Javascript
解决vue项目获取dom元素宽高总是不准确问题
2020/07/29 Javascript
[04:52]DOTA2亚洲邀请赛附加赛 TOP10精彩集锦
2015/01/29 DOTA
浅谈python 四种数值类型(int,long,float,complex)
2016/06/08 Python
Python实现将sqlite数据库导出转成Excel(xls)表的方法
2017/07/17 Python
Python基于socket实现简单的即时通讯功能示例
2018/01/16 Python
python 脚本生成随机 字母 + 数字密码功能
2018/05/26 Python
python单线程文件传输的实例(C/S)
2019/02/13 Python
Python爬虫 scrapy框架爬取某招聘网存入mongodb解析
2019/07/31 Python
python统计指定目录内文件的代码行数
2019/09/19 Python
Tensorflow限制CPU个数实例
2020/02/06 Python
css3通过scale()、rotate()实现放大、旋转
2020/03/19 HTML / CSS
意大利简约的休闲品牌:Aspesi
2018/02/08 全球购物
美国最大的电子宠物训练产品制造商:PetSafe
2018/10/12 全球购物
本科生详细的自我评价
2013/09/19 职场文书
汽车销售求职自荐信
2013/10/01 职场文书
求职者简历中的自我评价
2013/10/20 职场文书
中秋寄语大全
2014/04/11 职场文书
尊师重教演讲稿
2014/09/04 职场文书
Python 如何解决稀疏矩阵运算
2021/05/26 Python
Python内置的数据类型及使用方法
2022/04/13 Python
Docker安装MySql8并远程访问的实现
2022/07/07 Servers