Electron + VsCode 開發javaScript客戶端程序

hwtm4203 7年前發布 | 34K 次閱讀 Electron JavaScript開發 JavaScript

簡介:

Electron 是一款使用 Node 作為本地環境 的客戶端開發軟件

可以在本地直接打開 html 頁面,并使用 node 作為本地處理環境

Electron 可以使用 html + css + javaScript 的方式開發客戶端程序

而且Electron 是一種跨平臺環境

一 .Electron 安裝

直接通過 此教程即可直接 安裝并配置 elecron 運行所需要的 環境配置

不過要記住 通過 npm 安裝 electron 后,最好記一下electron 的安裝路徑,防止之后找著費勁

http://www.kancloud.cn/winu/e...

通過這個教程 基本的 electron 就可以跑起來了

不過現在還沒有和 編輯器綁定

而且通過 cmd 啟動的程序,log 是打到 cmd 中的并不方便調試.

二.使用 VSCode 開發

直接通過VSCode 官網 下載并安裝 VSCode (VSCode是一個免費軟件,起碼暫時是)

打開VS Code 后通過 文件→打開文件夾,打開項目

這時你的項目中 應該有3個文件 app.js index.html package.json

不過這時還不能通過 VSCode 啟動 項目

三.配置 VSCode 的Node 啟動

選擇左側測試標簽頁,點擊配置下拉列表,選擇添加配置

選擇Node.js

這時會在你的項目中 自動添加 .vscode 文件夾 并創建 launch.json 文件

不過這時 也只是應用了 node 的啟動方式,而不是 electron,也就是說現在項目還是無法啟動的

四.配置 VSCode 啟動 Electron

網上的教程 大多是通過 node_modules 下 .bin 中的 electron.cmd 執行程序啟動

不過如果直接建立文件,并且使用全局electron 執行程序,則沒有 electron 這個啟動文件

所以只能通過其他方式配置

找到項目文件夾,在文件夾中 創建 run.cmd 文件添加內容

electron . --debug=5858

更改 launch.json 文件,添加

"runtimeExecutable": "${workspaceRoot}\\run.cmd"

指向剛才添加的 文件

添加 "port": 5858 指向上面 electron 配置的 調試端口

當不配置調試線程時, 會因為VSCode 找不到調試線程而自動關閉程序

五.TypeScript 連續崩潰問題

有時在編寫 代碼或者 運行程序時,VSCode 連續報出 TypeScript 崩潰問題

解決辦法在全局 安裝 TypeScript ,如果無效 在本地安裝 TypeScript

全局安裝

npm install -g typescript

本地安裝(需要進入項目目錄)

npm install typescript

本地安裝時 如果你的項目中 沒添加過 node_modules

這時會自動創建 node_modules 文件夾

并在VsCode 中 點擊 文件→首選項→設置

這時 VSCode 會自動在項目根目錄下 建立 .vscode 文件夾,并建立 setting.json 文件

并在工作區設置中 添加

"typescript.tsdk": "./node_modules/typescript/lib"

六.常用語法

1.引用其他 js 文件

在 Node 中 js文件引用其他js 文件并不是像java 等中是直接引用,必須在文件中 顯示引用類文件并聲明對象才可使用

而其他文件中 可以調用到的 內容也必須通過特殊方式聲明,使用:

module.exports.str="string var";

聲明一條屬性,使用:

module.exports.testF = function(){
         console.log("testF")
    };

聲明一個方法

在使用的js 頁面中 使用

const testjs = require("./js/test.js");

引用并獲取一個實例

使用 對象名.方法/屬性,調用方法或者屬性

2.electron 中跨進程的通信和傳值

在electron 中程序和頁面的進程是獨立的,進程之間只能通過特殊方式進行 消息傳遞

這是為了防止在頁面中調用本地文件API,使之直接讀取/更改本地內容

在electron 中主線程,和渲染線程,都以注冊監聽器的方式監聽 由其他線程發來的信息

主線程使用 ipcMain 獲取主線程 ipc

const ipc = require('electron').ipcMain;

渲染線程使用 ipcRenderer 獲取 ipc

const ipc = require('electron').ipcRenderer;

兩種線程使用 ipc.on 的形式注冊"監聽器"

ipc.on('消息名', function ( e [, 參數 ][, 參數 ]) {
        console.log("收到客戶端/頁面 通信!");
    });

渲染線程使用 ipc.send 向主進程發送消息

ipc.send('消息名' [,參數] );

而主線程無法直接向渲染線程發送消息

需要使用 接收消息時的 e對象返回消息

e.sender.send('消息名' [,參數 ] );

在主進程 與渲染進程直線 通信時

可以直接傳遞對象參數,對象會在方法內自動被格式化為json字符串

在接受方 接收消息時,第一個參數 會是 e,而不是發送方傳入的 第一個參數

3.electron 本地文件操作

需要先獲取 fs對象

const rf = require("fs");

使用 rf.writeFile 寫入文件

rf.writeFile('文件路徑', '內容', function () {
         console("寫入文件成功!");
     });

使用 rf.read 讀取文件

var data = rf.readFileSync(filePath + fileName, "utf-8");

Sync 為同步讀取

這時已經能通過 VSCode 開發簡單的 electron 程序了

不過其實還有一點需要注意,在實際開發中 VSCode 的快捷鍵更偏向于 之前VS 系列的快捷鍵

而不是 Eclipse 系列

這里其實已經有官方的解決辦法了(兩種方式 結果相同)

1.通過點擊左側 擴展按鈕

輸入 @recommended:keymaps 點擊并安裝 EclipseKeymap 設置快捷鍵

2.點擊文件→首選項→鍵映射擴展

同樣會彈出這個頁面點擊下載即可

 

來自:https://segmentfault.com/a/1190000008349657

 

 本文由用戶 hwtm4203 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!