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 相关文章推荐
通过event对象的fromElement属性解决热区设置主实体的一个bug
Dec 22 Javascript
javascript中不等于的代码是什么怎么写
Dec 29 Javascript
如何实现textarea里的不同文本显示不同颜色
Jan 20 Javascript
红米手机抢购的js代码
Mar 10 Javascript
node.js WEB开发中图片验证码的实现方法
Jun 03 Javascript
如何用js 实现依赖注入的思想,后端框架思想搬到前端来
Aug 03 Javascript
浅谈Vue.js 1.x 和 2.x 实例的生命周期
Jul 25 Javascript
Vue实现导出excel表格功能
Mar 30 Javascript
Element UI框架中巧用树选择器的实现
Dec 12 Javascript
微信小程序实现form表单本地储存数据
Jun 27 Javascript
Vue实现input宽度随文字长度自适应操作
Jul 29 Javascript
在elementui中Notification组件添加点击事件实例
Nov 11 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配置心得包含MYSQL5乱码解决
2006/11/20 PHP
PHP+ajax 无刷新删除数据
2010/02/20 PHP
php数组函数序列之each() - 获取数组当前内部指针所指向元素的键名和键值,并将指针移到下一位
2011/10/31 PHP
C#静态方法与非静态方法实例分析
2014/09/22 PHP
PHP输出九九乘法表代码实例
2015/03/27 PHP
php使用COPY函数更新配置文件的方法
2015/06/18 PHP
通过PHP自带的服务器来查看正则匹配结果的方法
2015/12/24 PHP
PHP设计模式之装饰器模式定义与用法详解
2018/04/02 PHP
PHP7新特性之抽象语法树(AST)带来的变化详解
2018/07/17 PHP
不安全的常用的js写法
2009/09/15 Javascript
js 设置选中行的样式的实现代码
2010/05/24 Javascript
JS实现仿百度输入框自动匹配功能的示例代码
2014/02/19 Javascript
jquery 实现返回顶部功能
2014/11/17 Javascript
jQuery旋转木马式幻灯片轮播特效
2015/12/04 Javascript
对jquery的ajax进行二次封装以及ajax缓存代理组件:AjaxCache详解
2016/04/11 Javascript
基于JS如何实现类似QQ好友头像hover时显示资料卡的效果(推荐)
2016/06/09 Javascript
微信小程序 图片上传实例详解
2017/05/05 Javascript
SelectPage v2.4 发布新增纯下拉列表和关闭分页功能
2017/09/07 Javascript
详解angular部署到iis出现404解决方案
2018/08/14 Javascript
javascript对HTML字符转义与反转义
2018/12/13 Javascript
js中apply和call的理解与使用方法
2019/11/27 Javascript
如何利用javascript接收json信息并进行处理
2020/08/06 Javascript
[07:26]2015国际邀请赛第二日TOP10集锦
2015/08/06 DOTA
对python requests的content和text方法的区别详解
2018/10/11 Python
使用urllib库的urlretrieve()方法下载网络文件到本地的方法
2018/12/19 Python
python实现烟花小程序
2019/01/30 Python
在python plt图表中文字大小调节的方法
2019/07/08 Python
Python实现TCP通信的示例代码
2019/09/09 Python
Python修改列表值问题解决方案
2020/03/06 Python
Django bulk_create()、update()与数据库事务的效率对比分析
2020/05/15 Python
英国知名美妆护肤在线商城:Zest Beauty
2018/04/24 全球购物
培训演讲稿范文
2014/01/12 职场文书
小学教师听课制度
2014/02/01 职场文书
党支部2014年度工作总结
2014/12/04 职场文书
Nginx工作原理和优化总结。
2021/04/02 Servers
vue组件vue-esign实现电子签名
2022/04/21 Vue.js