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截取url中问号后面参数的值信息
Apr 29 Javascript
JS简单循环遍历json数组的方法
Apr 22 Javascript
React.js入门实例教程之创建hello world 的5种方式
May 11 Javascript
jQuery中选择器的基础使用教程
May 23 Javascript
javascript入门之数组[新手必看]
Nov 21 Javascript
JS实现无缝循环marquee滚动效果
May 22 Javascript
基于JavaScript实现微信抢红包功能
Jul 20 Javascript
详解element-ui中form验证杂记
Mar 04 Javascript
JavaScript碰撞检测原理及其实现代码
Mar 12 Javascript
webpack3.0升级4.0的方法步骤
Apr 02 Javascript
vue使用screenfull插件实现全屏功能
Sep 17 Javascript
微信小程序实现点击页面出现文字
Sep 21 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
漫荒推荐:画风超赞的国风漫画推荐 超长假期不无聊
2020/03/08 国漫
PHP 的 __FILE__ 常量
2007/01/15 PHP
PHP 日期时间函数的高级应用技巧
2009/10/10 PHP
php封装好的人民币数值转中文大写类
2015/12/20 PHP
prototype Element学习笔记(Element篇三)
2008/10/26 Javascript
javascript同页面多次调用弹出层具体实例代码
2013/08/16 Javascript
开发中可能会用到的jQuery小技巧
2014/03/07 Javascript
超实用的JavaScript表单代码段
2016/02/26 Javascript
js获取Get值的方法
2016/09/29 Javascript
Bootstrap CSS布局之按钮
2016/12/17 Javascript
vuejs指令详解
2017/02/07 Javascript
jQuery复合事件用法示例
2017/06/10 jQuery
node.js 用socket实现聊天的示例代码
2017/10/17 Javascript
vue项目中公用footer组件底部位置的适配问题
2018/05/10 Javascript
webpack4手动搭建Vue开发环境实现todoList项目的方法
2019/05/16 Javascript
js中offset,client , scroll 三大元素知识点总结
2019/09/11 Javascript
javascript实现评分功能
2020/06/24 Javascript
Python操作Excel之xlsx文件
2017/03/24 Python
Python实现网站注册验证码生成类
2017/06/08 Python
Python三级菜单的实例
2017/09/13 Python
python异步编程 使用yield from过程解析
2019/09/25 Python
Python3创建Django项目的几种方法(3种)
2020/06/03 Python
Python读取xlsx数据生成图标代码实例
2020/08/12 Python
详解Python 函数参数的拆解
2020/09/02 Python
python实现跨年表白神器--你值得拥有
2021/01/04 Python
Boden英国官网:英国知名原创时装品牌
2018/11/06 全球购物
固特异美国在线轮胎店:Goodyear Tire
2019/02/23 全球购物
意大利辅助药品、药物和补品在线销售:FarmaEurope
2020/04/29 全球购物
幼儿园保育员责任书
2014/07/22 职场文书
工伤事故处理协议书怎么写
2014/10/15 职场文书
安全生产先进个人事迹材料
2014/12/30 职场文书
幼儿园小朋友毕业感言
2015/07/30 职场文书
医疗纠纷调解协议书
2015/08/06 职场文书
2016年幼儿园教研活动总结
2016/04/05 职场文书
导游词之绍兴柯岩古镇
2020/01/09 职场文书
简述Java中throw-throws异常抛出
2021/08/07 Java/Android