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 相关文章推荐
Google Suggest ;-) 基于js的动态下拉菜单
Oct 11 Javascript
js中widow.open()方法使用详解
Jul 30 Javascript
jquery ajax实现下拉框三级无刷新联动,且保存保持选中值状态
Oct 29 Javascript
浅谈jQuery页面的滚动位置scrollTop、scrollLeft
May 19 Javascript
jQuery实现页面顶部下拉广告
Dec 30 Javascript
Web开发中客户端的跳转与服务器端的跳转的区别
Mar 05 Javascript
基于js 本地存储(详解)
Aug 16 Javascript
JS实现简单的星期格式转换功能示例
Jul 23 Javascript
微信小程序之裁剪图片成圆形的实现代码
Oct 11 Javascript
微信小程序五子棋游戏的悔棋实现方法【附demo源码下载】
Feb 20 Javascript
vue+springboot图片上传和显示的示例代码
Feb 14 Javascript
Vue实现计算器计算效果
Aug 17 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生成随机数的方法实例分析
2015/01/22 PHP
php格式化金额函数分享
2015/02/02 PHP
一个符号插入器 中用到的js代码
2007/09/04 Javascript
javascript removeChild 使用注意事项
2009/04/11 Javascript
js封装可使用的构造函数继承用法分析
2015/01/28 Javascript
js鼠标悬浮出现遮罩层的方法
2015/01/28 Javascript
JS实现仿QQ面板的手风琴效果折叠菜单代码
2015/09/11 Javascript
jquery实现鼠标点击后展开列表内容的导航栏效果
2015/09/14 Javascript
jQuery使用经验小技巧(推荐)
2016/05/31 Javascript
JS面试题---关于算法台阶的问题
2016/07/26 Javascript
Javascript中arguments对象的详解与使用方法
2016/10/04 Javascript
KnockoutJS 3.X API 第四章之表单textInput、hasFocus、checked绑定
2016/10/11 Javascript
浅谈Nodejs中的作用域问题
2016/12/26 NodeJs
多个上传文件用js验证文件的格式和大小的方法(推荐)
2017/03/09 Javascript
layer.confirm取消按钮绑定事件的方法
2018/08/17 Javascript
微信小程序实现留言功能
2018/10/31 Javascript
vue实现百度下拉列表交互操作示例
2019/03/12 Javascript
微信小程序实现图片上传
2019/05/23 Javascript
koa2+vue实现登陆及登录状态判断
2019/08/15 Javascript
TypeScript中使用getElementXXX()的示例代码
2019/09/12 Javascript
React.js组件实现拖拽排序组件功能过程解析
2020/04/27 Javascript
详解使用python爬取抖音app视频(appium可以操控手机)
2021/01/26 Python
CSS3 3D旋转rotate效果实例介绍
2016/05/03 HTML / CSS
使用CSS3实现input多选框自定义样式的方法示例
2019/07/19 HTML / CSS
整理HTML5中表单的常用属性及新属性
2016/02/19 HTML / CSS
台湾专柜女包:KINAZ
2019/12/26 全球购物
大专会计自我鉴定
2014/02/06 职场文书
奥巴马获胜演讲稿
2014/05/15 职场文书
图书室标语
2014/06/21 职场文书
促销活动总结怎么写
2014/06/25 职场文书
日语专业求职信
2014/07/04 职场文书
个人政风行风自查自纠报告
2014/10/21 职场文书
学生会个人总结范文
2015/02/15 职场文书
新年祝酒词大全
2015/08/11 职场文书
竞聘开场白方式有哪些?
2019/08/28 职场文书
winserver2019安装软件一直卡在应用程序正在为首次使用做准备
2022/06/10 Servers