electron桌面端開發
現在越來越多的軟件開發已經趨向于簡單化,桌面端開發已經不在依賴之前的java、c++等主流技術,目前基于node的開發越來越廣泛。功能點也越來越多元化。
文章目錄
- electron桌面端開發
- 前言
- 一、打開文件的方式?
- 二、exec使用步驟
- 1.路徑處理
- 2.方法使用
- 二、spawn使用步驟
- 1.路徑處理
- 2.方法使用
- 總結
前言
測試,用electron開發中打開指定的軟件,但是要指定安裝的軟件的路徑進行打開,以及指定軟件支持的格式的文件進行操作,否則會出現錯誤,通常和計算機交互必須使用ipc.invoke封裝的相關方法調用計算機的功能。
一、打開文件的方式?
打開文件的方式有兩種exec和spawn,但是本人比較推薦實用spawn,因為當前插件比較實用大數據的打開以及查看,相關性能請對照下圖進行選擇
二、exec使用步驟
1.路徑處理
代碼如下(示例):傳輸的路徑必須要有雙引號
// 自動為路徑添加引號(exec,需要添加雙引號路徑)
const escapePath=(exePath) =>{if (exePath.includes(' ')) {return `"${exePath}"`; // 包裹路徑}return exePath; // 不包含空格時直接返回
}
2.方法使用
代碼如下(示例):
let exePath = '"D:\\Program Files (x86)\\ArcGIS\\Desktop10.8\\bin\\ArcMap.exe"'let filePath= '"E:\\tifProjects\\data\\測試文件.mxd"'const params = {argsData:exePath,filePath:filePath}//調用中間方法可以詢問博主ipc.invoke(ipcApiRoute.file.openExec,params)//調用的基礎插件const {exec, spawn} = require("node:child_process");const {argsData,filePath} = argsconst command = `${argsData} ${filePath}`;try {通過exec啟動命令exec(command, (error, stdout, stderr) => {if (error) {console.error(`執行失敗: ${error.message}`);return;}if (stderr) {console.error(`stderr: ${stderr}`);return;}console.log(`輸出: ${stdout}`);});}
二、spawn使用步驟
1.路徑處理
代碼如下(示例):傳輸的路徑不需要雙引號
let exePath = 'D:\\Program Files (x86)\\ArcGIS\\Desktop10.8\\bin\\ArcMap.exe'let filePath= 'E:\\tifProjects\\data\\測試文件.mxd'const params = {argsData:exePath,filePath:filePath}//調用中間方法可以詢問博主ipc.invoke(ipcApiRoute.file.openExec,params)
2.方法使用
代碼如下(示例):
//調用的基礎插件const {exec, spawn} = require("node:child_process");openExec(args) {const {argsData,filePath} = argstry {// 通過 spawn 啟動命令// ArcMap 路徑const arcmap = spawn(argsData, [filePath], {windowsHide: true});arcmap.stdout.on('data', (data) => {console.log(`stdout: ${data}`);});arcmap.stderr.on('data', (data) => {console.error(`stderr: ${data}`);});arcmap.on('close', (code) => {console.log(`子進程退出,代碼 ${code}`);});arcmap.on('error', (err) => {console.error('啟動失敗:', err);});} catch (err) {return { success: false, message: err.message }}}
總結
使用 spawn,參數隔離、執行穩定,特別適合打開帶路徑、文件名、中文字符的軟件和文件。