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 相关文章推荐
js 页面关闭前的出现提示的实现代码
May 25 Javascript
分享几个超级震憾的图片特效
Jan 08 Javascript
JavaScript自定义方法实现trim()、Ltrim()、Rtrim()的功能
Nov 03 Javascript
jQuery实现的经典竖向伸缩菜单效果代码
Sep 24 Javascript
jQuery Validate表单验证插件 添加class属性形式的校验
Jan 18 Javascript
Vue-Access-Control 前端用户权限控制解决方案
Dec 01 Javascript
js数组去重的N种方法(小结)
Jun 07 Javascript
vue-cli2.0转3.0之项目搭建的详细步骤
Dec 11 Javascript
详解vue-cli3多页应用改造
Jun 04 Javascript
改变layer confirm弹窗按钮的颜色方法
Sep 12 Javascript
js抽奖转盘实现方法分析
May 16 Javascript
javascript实现电商放大镜效果
Nov 23 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制作简单的内容采集器的原理分析
2008/10/01 PHP
我的php学习笔记(毕业设计)
2012/02/21 PHP
Codeigniter校验ip地址的方法
2015/03/21 PHP
最新制作ThinkPHP3.2.3完全开发手册
2015/11/23 PHP
WordPress中的shortcode短代码功能使用详解
2016/05/17 PHP
php微信开发之上传临时素材
2016/06/24 PHP
laravel-admin 实现在指定的相册下添加照片
2019/10/21 PHP
script标签属性type与language使用选择
2012/12/02 Javascript
js sort 二维数组排序的用法小结
2014/01/24 Javascript
全面解析Bootstrap手风琴效果
2020/04/17 Javascript
JavaScript中style.left与offsetLeft的使用及区别详解
2016/06/08 Javascript
javascript日期比较方法实例分析
2016/06/17 Javascript
基于jQuery实现火焰灯效果导航菜单
2017/01/04 Javascript
vue2.0结合DataTable插件实现表格动态刷新的方法详解
2017/03/17 Javascript
vue实现移动端图片裁剪上传功能
2020/08/18 Javascript
es6学习之解构时应该注意的点
2017/08/29 Javascript
JS 中可以提升幸福度的小技巧(可以识别更多另类写法)
2018/07/28 Javascript
解决vue-quill-editor上传内容由于图片是base64的导致字符太长的问题
2018/08/20 Javascript
vue过滤器用法实例分析
2019/03/15 Javascript
nuxt踩坑之Vuex状态树的模块方式使用详解
2019/09/06 Javascript
nodejs+koa2 实现模仿springMVC框架
2020/10/21 NodeJs
[03:55]DOTA2完美大师赛选手传记——LFY.MONET
2017/11/18 DOTA
python3图片转换二进制存入mysql
2013/12/06 Python
python妙用之编码的转换详解
2017/04/21 Python
python中类变量与成员变量的使用注意点总结
2017/04/29 Python
python实现拓扑排序的基本教程
2018/03/11 Python
Python 修改列表中的元素方法
2018/06/26 Python
python检测IP地址变化并触发事件
2018/12/26 Python
python 获取等间隔的数组实例
2019/07/04 Python
Python爬取知乎图片代码实现解析
2019/09/17 Python
Python中Flask-RESTful编写API接口(小白入门)
2019/12/11 Python
django之导入并执行自定义的函数模块图解
2020/04/01 Python
马来西亚网上美容店:Hermo.my
2017/11/25 全球购物
我的applet原先好好的, 一放到web server就会有问题,为什么?
2016/05/10 面试题
小学生考试获奖感言
2014/01/30 职场文书
Mongo服务重启异常问题的处理方法
2021/07/01 MongoDB