国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Electron入門介紹

yunhao / 2632人閱讀

摘要:進程主進程在里,運行里腳本的進程被稱為主進程。渲染進程由于使用來展示頁面,所以的多進程結構也被充分利用。當一個實例被銷毀后,相應的渲染進程也會被終止。在,我們提供用于在主進程與渲染進程之間通訊的模塊。

Github 系列文章地址
筆者前兩天心血來潮做了個MACOS下可以進行OCR圖文識別的小工具,發現Electron 在1.x之后API發生了挺大的變化,估計也是我好久沒碰了,所以打算把這些系列整理下扔出來,有興趣的也可以關注筆者的ElectronOCR這個實踐項目,自認為還是有點用的,不過貌似沒啥人喜歡。

Introduction

Electron 可以讓你使用純 JavaScript 調用豐富的原生 APIs 來創造桌面應用。你可以把它看作是專注于桌面應用而不是 Web 服務器的io.js 的一個變體。這不意味著 Electron 是綁定了 GUI 庫的 JavaScript。相反,Electron 使用 Web 頁面作為它的 GUI,所以你能把它看作成一個被 JavaScript 控制的,精簡版的 Chromium 瀏覽器。

Process(進程) 主進程

在 Electron 里,運行 package.jsonmain 腳本的進程被稱為主進程。在主進程運行的腳本可以以創建 web 頁面的形式展示 GUI。

渲染進程

由于 Electron 使用 Chromium 來展示頁面,所以 Chromium 的多進程結構也被充分利用。每個 Electron 的頁面都在運行著自己的進程,這樣的進程我們稱之為渲染進程。在一般瀏覽器中,網頁通常會在沙盒環境下運行,并且不允許訪問原生資源。然而,Electron 用戶擁有在網頁中調用 io.js 的 APIs 的能力,可以與底層操作系統直接交互。

主進程與渲染進程的區別

主進程使用 BroswerWindow 實例創建網頁。每個 BroswerWindow 實例都在自己的渲染進程里運行著一個網頁。當一個 BroswerWindow 實例被銷毀后,相應的渲染進程也會被終止。主進程管理所有頁面和與之對應的渲染進程。每個渲染進程都是相互獨立的,并且只關心他們自己的網頁。由于在網頁里管理原生 GUI 資源是非常危險而且容易造成資源泄露,所以在網頁面調用 GUI 相關的 APIs 是不被允許的。如果你想在網頁里使用 GUI 操作,其對應的渲染進程必須與主進程進行通訊,請求主進程進行相關的 GUI 操作。
在 Electron,我們提供用于在主進程與渲染進程之間通訊的 ipc 模塊。并且也有一個遠程進程調用風格的通訊模塊 remote。

Reference Tutorials & Docs

electron-api-demos:官方的Electron API示范

官方文檔的中文翻譯:官方的API中文翻譯

Boilerplate

electron-react-boilerplate

electron-boilerplate

Practice

Hokein編輯的Electron示范項目

Quick Start Installation

electron-prebuild

npm install -g electron-prebuilt

如果你已經用 npm 全局安裝了 electron-prebuilt,你只需要按照如下方式直接運行你的應用:

electron .

如果你是局部安裝,那運行:

./node_modules/.bin/electron .

手工下載 Electron 二進制文件

如果你手工下載了 Electron 的二進制文件,你也可以直接使用其中的二進制文件直接運行你的應用。

(1)Windows

$ .electronelectron.exe your-app

(2)Linux

$ ./electron/electron your-app/

(3)OS X

$ ./Electron.app/Contents/MacOS/Electron your-app/

Electron.app 里面是 Electron 發布包,你可以在這里下載到。

Webpack DevTools

npm install --save-dev devtron
require("devtron").install()
HelloWorld

大體上,一個 Electron 應用的目錄結構如下:

your-app/
├── package.json //通用的node項目的聲明文件
├── main.js //主進程渲染文件

├── renderer.js //渲染進程文件

└── index.html //主入口文件

package.json的格式和 Node 的完全一致,并且那個被 main 字段聲明的腳本文件是你的應用的啟動腳本,它運行在主進程上。你應用里的 package.json 看起來應該像:

{
  "name"    : "your-app",
  "version" : "0.1.0",
  "main"    : "main.js"
}

注意:如果 main 字段沒有在 package.json 聲明,Electron會優先加載 index.js

主進程

main.js 應該用于創建窗口和處理系統時間,一個典型的例子如下:

/**
 * Created by apple on 16/6/3.
 */
const electron = require("electron");
// 用于控制應用生命周期
const {app} = electron;
// 用于創建本地窗口
const {BrowserWindow} = electron;

//為Window對象創建一個全局的引用,否則可能被JavaScript的垃圾回收機制自動回收
let win;

/**
 * @function 創建窗口
 */
function createWindow() {
    // 創建類似于瀏覽器的窗口
    win = new BrowserWindow({width: 800, height: 600});

    // 加載應用入口文件,本文件為測試文件,因此加載的是測試
    win.loadURL(`file://${__dirname}/dist/app.html`);

    // 啟動調試工具,如果是開發環境下則不需要開啟
    win.webContents.openDevTools();

    // 設置窗口關閉事件
    win.on("closed", () => {
        //因為上面是設置了一個全局引用,因此這里需要對該對象解除引用
        //如果你的應用支持打開多窗口,可以把所有的引用存入一個數組中,然后在這里動態刪除
        win = null;
    });
}

// 在基本環境準備好之后的回調
app.on("ready", createWindow);

// 所有窗口都關閉之后的回調
app.on("window-all-closed", () => {
    //在OSX中經常是用戶雖然關閉了主窗口,但是仍然希望使用Menu Bar,因此這里不進行強行關閉
    // On OS X it is common for applications and their menu bar
    // to stay active until the user quits explicitly with Cmd + Q
    if (process.platform !== "darwin") {
        app.quit();
    }
});

// 應用被重新激活之后的回調
app.on("activate", () => {
    // 在Dock中的Menu Bar被點擊之后重新激活應用
    if (win === null) {
        createWindow();
    }
});
入口文件

最后,你想展示的 index.html





  

    

    Hello World!

  

  

    

Hello World!

We are using node , Chromium , and Electron .
渲染進程

實際上,在Electron項目中,關于Hot-Reload等等配置都和筆者在我的Webpack套裝中提及的一系列配置方案。關于這方面的具體實踐可以參考筆者ElectronOCR這個實戰項目。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/86356.html

相關文章

  • Electron入門介紹

    摘要:本文主要講解的入門。可以幫助我們管理包的下載依賴部署發布等。可以認為是中的。后續使用中,全部替換為即可。命令根據它,自動下載所需模塊用于創建窗口和處理系統事件安裝包的位置。 Electron是什么 可以認為Electron是一種運行環境庫,我們可以基于此,用HTML、JS和CSS寫桌面應用。PC端的UI交互,主要有web應用和桌面應用。具體采用哪種方式,主要看系統的應用場景,哪個更合適...

    wing324 評論0 收藏0
  • 一口氣完成electron入門學習

    摘要:目前類似的工具有,等。在渲染進程中,直接調用原生的接口是十分危險的。這里介紹一種,通過和對象,以消息的方式進行通信。主進程獲得消息后,通過返回信息。另外,還提供了一種同步的消息傳遞方式。打包完成功能代碼后,我們需要將代碼打成可運行的包。 介紹 目前,使用前端技術開發桌面應用已經越來越成熟,這使得前端同學也可以參與桌面應用的開發。目前類似的工具有electron,NW.js等。這里我們著...

    Ethan815 評論0 收藏0
  • Electron 快速入門

    摘要:當一個實例被銷毀后,相應的渲染進程也會被終止。之所以命名為,主要是為了與主進程這個概念對應。部分在事件觸發后才能使用。當全部窗口關閉時退出。主進程接收到消息并處理之后,會返回處理結果。 簡介 Electron 是一個可以使用 Web 技術如 JavaScript、HTML 和 CSS 來創建跨平臺原生桌面應用的框架。借助 Electron,我們可以使用純 JavaScript 來調用豐...

    Drummor 評論0 收藏0
  • Electron,從玩玩具的心態開始,到打造出一款越來越優秀的桌面客戶端產品

    摘要:首發于酷家樂前端博客標題是我以第一視角基于開發客戶端產品的體驗,我將在之后分一系列文章向有興趣的朋友一步一步介紹我是怎么從玩玩具的心態開始接觸到去開發客戶端產品,最后隨著業務和功能的復雜度提升再不斷地優化客戶端。 首發于酷家樂前端博客 標題是我以第一視角基于 Electron 開發客戶端產品的體驗,我將在之后分一系列文章向有興趣的朋友一步一步介紹我是怎么從玩玩具的心態開始接觸 Ele...

    Markxu 評論0 收藏0
  • Electron指南 - 快速入門

    摘要:快速入門提供了豐富的本地操作系統的,使你能夠使用純來創建桌面應用程序。這并不意味著是一個綁定圖形用戶界面的庫。每個頁面在里是運行在自己的進程里,這些進程被稱為渲染進程。有些只能在該事件發生后才能被使用。 快速入門 Electron提供了豐富的本地(操作系統)的API,使你能夠使用純JavaScript來創建桌面應用程序。與其它各種的Node.js運行時不同的是Electron專注于桌面...

    SQC 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<