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 动画基础教程
Dec 25 Javascript
jquery 卷帘效果实现代码(不同方向)
Feb 05 Javascript
js获取或设置当前窗口url参数的小例子
Oct 14 Javascript
IE中鼠标经过option触发mouseout的解决方法
Jan 29 Javascript
jQuery检测输入的字符串包含的中英文的数量
Apr 17 Javascript
js+css实现超简洁的二级下拉菜单效果代码
Sep 07 Javascript
JS三级可折叠菜单实现方法
Feb 29 Javascript
js获取元素的外链样式的简单实现方法
Jun 06 Javascript
Bootstrap图片轮播组件使用实例解析
Jun 30 Javascript
vue判断input输入内容全是空格的方法
Mar 02 Javascript
JavaScript原型链与继承操作实例总结
Aug 24 Javascript
vue的注意规范之v-if 与 v-for 一起使用教程
Aug 04 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中安装Apache2和PHP4的权威指南
2006/10/09 PHP
在PHP里得到前天和昨天的日期的代码
2007/08/16 PHP
php 获取select下拉列表框的值
2010/05/08 PHP
PHP实现的自定义图像居中裁剪函数示例【测试可用】
2017/08/11 PHP
thinkphp 抓取网站的内容并且保存到本地的实例详解
2017/08/25 PHP
PHP常用正则表达式精选(推荐)
2019/05/28 PHP
JavaScript confirm选择判断
2008/10/18 Javascript
JQuery 应用 JQuery.groupTable.js
2010/12/15 Javascript
js如何获取file控件的完整路径具体实现代码
2013/05/15 Javascript
javascript自动生成包含数字与字符的随机字符串
2015/02/09 Javascript
js实现选中复选框文字变色的方法
2015/08/14 Javascript
JS获取当前使用的浏览器名字以及版本号实现方法
2016/08/19 Javascript
老生常谈原生JS执行环境与作用域
2016/11/22 Javascript
详解在Vue中通过自定义指令获取dom元素
2017/03/04 Javascript
vue如何使用 Slot 分发内容实例详解
2017/09/05 Javascript
Vue.js与 ASP.NET Core 服务端渲染功能整合
2017/11/16 Javascript
详解操作虚拟dom模拟react视图渲染
2018/07/25 Javascript
vue里面v-bind和Props 利用props绑定动态数据的方法
2018/08/27 Javascript
Vue Cli3 创建项目的方法步骤
2018/10/15 Javascript
vue路由守卫+登录态管理实例分析
2019/05/21 Javascript
npm qs模块使用详解
2020/02/07 Javascript
Vue中使用JsonView来展示Json树的实例代码
2020/11/16 Javascript
为什么选择python编程语言入门黑客攻防 给你几个理由!
2018/02/02 Python
对pandas数据判断是否为NaN值的方法详解
2018/11/06 Python
Django项目中添加ldap登陆认证功能的实现
2019/04/04 Python
如何基于Python按行合并两个txt
2020/11/03 Python
三星英国官网:Samsung英国
2018/09/25 全球购物
洲际酒店集团英国官网:IHG英国
2019/07/10 全球购物
工厂门卫岗位职责
2013/11/25 职场文书
JAVA程序员自荐书
2014/01/30 职场文书
大学应届毕业生求职信
2014/05/24 职场文书
乡镇干部个人对照检查材料思想汇报
2014/10/04 职场文书
致短跑运动员加油稿
2015/07/21 职场文书
公文写作:教你写“建议书”
2019/05/07 职场文书
Python OpenCV实现图形检测示例详解
2022/04/08 Python
JS前端轻量fabric.js系列之画布初始化
2022/08/05 Javascript