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 DOM 添加事件
Feb 14 Javascript
setTimeout 不断吐食CPU的问题分析
Apr 01 Javascript
ExtJS 2.0实用简明教程 之Border区域布局
Apr 29 Javascript
jquery validation验证身份证号,护照,电话号码,email(实例代码)
Nov 06 Javascript
jQuery中unwrap()方法用法实例
Jan 16 Javascript
jquery中change()用法实例分析
Feb 06 Javascript
javascript实现图片循环渐显播放的方法
Feb 24 Javascript
jQuery移动web开发中的页面初始化与加载事件
Dec 03 Javascript
基于JS实现二维码图片固定在右下角某处并跟随滚动条滚动
Feb 08 Javascript
详解express + mock让前后台并行开发
Jun 06 Javascript
CKeditor富文本编辑器使用技巧之添加自定义插件的方法
Jun 14 Javascript
JavaScript内置对象之Array的使用小结
May 12 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
CodeIgniter框架中_remap()使用方法2例
2014/03/10 PHP
smarty缓存用法分析
2014/12/16 PHP
jQuery 自动增长的文本输入框实现代码
2010/04/02 Javascript
JavaScript 模拟类机制及私有变量的方法及思路
2013/07/10 Javascript
随鼠标上下滚动的jquery代码
2013/12/05 Javascript
javascript中offset、client、scroll的属性总结
2015/08/13 Javascript
简单总结JavaScript中的String字符串类型
2016/05/26 Javascript
js弹出窗口返回值的简单实例
2016/05/28 Javascript
jquery输入数字随机抽奖特效的简单实现代码
2016/06/10 Javascript
js模式化窗口问题![window.dialogArguments]
2016/10/30 Javascript
Vue指令的钩子函数使用方法
2017/03/20 Javascript
Node.js使用Angular简单示例
2018/05/11 Javascript
当vue路由变化时,改变导航栏的样式方法
2018/08/22 Javascript
浅谈Fetch 数据交互方式
2018/12/20 Javascript
Angular CLI 使用教程指南参考小结
2019/04/10 Javascript
关于vue-cli 3配置打包优化要点(推荐)
2019/04/22 Javascript
vue中用 async/await 来处理异步操作
2020/07/18 Javascript
[01:15]《辉夜杯》北京网鱼队巡礼
2015/10/26 DOTA
Python交换变量
2008/09/06 Python
使用BeautifulSoup爬虫程序获取百度搜索结果的标题和url示例
2014/01/19 Python
遍历python字典几种方法总结(推荐)
2016/09/11 Python
python3正则提取字符串里的中文实例
2019/01/31 Python
Django封装交互接口代码
2020/07/12 Python
序列化Python对象的方法
2020/08/01 Python
CSS3模拟IOS滑动开关效果
2016/09/28 HTML / CSS
在html页面中取得session中的值的方法
2020/08/11 HTML / CSS
英国高档时尚男装购物网站:MR PORTER
2016/08/09 全球购物
佐卡伊官网:中国知名珠宝品牌
2017/02/05 全球购物
廉价航班、机票和酒店:JustFly
2018/02/07 全球购物
草船借箭教学反思
2014/02/03 职场文书
维修工先进事迹
2014/05/29 职场文书
舞蹈兴趣小组活动总结
2014/07/07 职场文书
2015年资料员工作总结
2015/04/25 职场文书
如何撰写出一份完美的商业计划书?
2019/07/12 职场文书
处世之道:关于真诚相待的名言推荐
2019/12/02 职场文书
Python 数据可视化之Bokeh详解
2021/11/02 Python