愿你坚持不懈,努力进步,进阶成自己理想的人

—— 2017.09, 写给3年后的自己

opn模块使用总结

opn是Node下一个更好的启动模块。它可以打开网站、文件、可执行文件,而且opn是跨平台的

为什么使用opn

  • opn是一个积极维护中的模块
  • 支持app参数
  • 由于使用exec代替了spawn,所以更安全
  • 修正了大部分node-open的问题
  • 包含了Liunx下最新的xdg-open脚本


安装

$ npm install --save opn


用法

const opn = require('opn');
// 用默认的图片浏览器打开图片文件
opn('someimage.png').then(() => {
    // 关闭图片浏览器后的处理逻辑
});

// 用默认的浏览器打开网址 
opn('https://ruphi.cn');
 
// 指定应用打开
opn('https://ruphi.cn', {app: 'firefox'});
 
// 指定传递给应用的参数
opn('https://ruphi.cn', {app: ['google chrome', '--incognito']});


API

opn模块在macOS下使用open命令,在windows下使用start,而在其他平台下用xdg-open命令

1、语法:

opn(target, [options])

返回值是一个promise对象,通常情况下我们并不需要用到这个返回值。但是如果我们想加上自定义事件监听器,或者直接在打开的进程上执行操作,那么这个返回值是很有用的

2、参数说明

  • target
    类型: string
    指定你想打开的东西,可以是URL、文件或者可执行文件
    默认情况下,会用系统对文件类型设置的默认应用打开:如URL会用默认浏览器打开
  • options
    类型: Object
    • wait
      类型: boolean
      默认值: true
      直到打开的应用退出了,再fullfill Promise,如果这个值设为false的话,那么应用打开后,Promise就会立即进入fullfill状态。在windows平台上,需要明确指明应用,才能够等待。
    • app
      类型: string | Array
      指定用来打开目标对象的应用,可以是一个数组(带应用名称和应用参数)
      注意:应用名称是依赖于特定平台的,不推荐在可复用模块里使用硬编码。如Chrome浏览器,它在macOS下是google chrome,windows下是chrome,而Linux下是google-chrome