npm 包 electron-webpack-ts 使用教程

阅读时长 14 分钟读完

在前端开发中,如果想要快速开发跨平台的桌面应用程序,Electron 是一款非常好的选择。它基于 Node.js 和 Chromium,可以通过 HTML、CSS 和 JavaScript 开发桌面应用。同时,electron-webpack-ts 这个 npm 包也为我们简化了使用 TypeScript 进行 Electron 开发的流程。

安装

首先,你需要安装 Node.js 环境以及 Git。然后,通过以下命令进行安装:

安装完成后,我们可以通过以下命令来创建一个基于 electron-webpack-ts 的项目:

目录结构

-- -------------------- ---- -------
----------------
--- ------------
--- -----------------
--- -------------
--- ----------
--- ----
-   --- ------------
-   --- ----
-   -   --- ----------
-   -   --- --------
-   -   --- ----------
-   --- ------
-       --- -----
-       -   --- ---------
-       --- ---------
-           --- -----------
-           -   --- ---------
-           --- --------
--- ------
  • package.json:项目配置文件。
  • webpack.config.ts:webpack 配置文件,存放 webpack 的各种配置信息。
  • tsconfig.json:TypeScript 配置文件。
  • .gitignore:Git 忽略文件列表。
  • app/:应用程序代码目录。
    • package.json:应用程序配置文件。
    • src/:主进程代码目录。
      • index.html:应用程序的入口 HTML 文件。
      • index.ts:主进程入口文件。
      • preload.ts:预加载文件,可以在这里注入一些 Node.js 模块和 API。
    • views/:渲染进程代码目录。
      • main/:作为主窗口显示的页面代码目录。
      • renderer/:与主进程分离的渲染进程代码目录。
        • components/:共用组件目录。
        • index.ts:渲染进程入口文件。
  • build/:编译后的代码目录。

配置

webpack.config.ts

这个文件是 webpack 的配置文件,我们可以在这里修改一些配置以适应我们的需求。比如:

  • target: 'electron-renderer':设置 webpack 编译的目标为 electron 渲染进程。
  • devtools: ['source-map']:启用 source-map 功能,可以在 Chrome 的调试器中查看源代码。
  • ElectronForgePlugin():增加 Electron Forge 插件,可以自动生成安装包和构建应用程序。
-- -------------------- ---- -------
------ - ------------- - ---- ----------
------ - ------- - ---- -------
------ - ----------------------------------- ------------------- - ---- ----------------------

----- ------- ------------- - -
  ----- -------------- -- ------------ - -------------
  ------- -------------------- -- ------ - --------------- - -------------------
  ------ -
    ------ ----------------------- ------ ------ -----------
  --
  ------- -
    --------- ------------
    ----- ----------------------- -------- -------
    -------------------- --------------------
  --
  -------- -
    ----------- -------- ------ ------ ---------
    ------ -
      ---- ----------------------- ------
    -
  --
  ------- -
    ------ -
      -
        ----- ----------
        ---- ------------
        -------- --------------
      --
      -
        ----- --------------------------
        ----- ----------------
      -
    -
  --
  -------- ---------------
  -------- -
    --- -------------------------------------
    --- ---------------------
      ----------- -----------------------------
      ------ -----
      ------------ - ------ ---- --
      -------- -
        --------- -
          ------- ------------------------------
        --
      --
      --------------- -
        ----- --------- ----
      -
    --
  --
  ------------- -
    --------- -----
  -
--

------ ------- -------

tsconfig.json

这个文件是 TypeScript 的配置文件,我们可以在这里配置一些 TypeScript 的编译信息。

-- -------------------- ---- -------
-
  ------------------ -
    --------- ---------
    --------- ---------
    ------ ---------- -------
    -------------- -----
    ------------ -----
    --------- -----------
    ---------- -----
    ---------- ------
    ---------- ------
    --------- -----
    ---------------- -----
    ----------------- -----
    ------------------ -----
    -------------------- -----
    ----------------- ------
    ----------------------------------- -----
    --------------- ----
  --
  ---------- -
    --------
  -
-

eslint

我们可以通过配置 eslint 和 prettier 来格式化代码和检查语法错误。在项目中,可以在根目录下创建一个 .eslintrc.js 文件,然后在里面进行配置。示例配置如下:

-- -------------------- ---- -------
-------------- - -
  -------- -
    ---------------------
    ----------------------------------------
    ------------------------------
    -----------------------------
  --
  -------- ---------------------- ------------
  ---- -
    ----- -----
    -------- -----
    ---- ----
  --
  -------------- -
    ----------- ---------
    ------------ ----
  --
  ------ -
    -------------------- --------
    ------------------------------------- -----
  -
--

package.json

这个文件是我们的应用程序配置文件,我们可以在这里配置一些应用程序的信息,比如应用程序名称、版本号、依赖包信息等。

-- -------------------- ---- -------
-
  ------- ------------------
  ---------- --------
  -------------- --- -------- -----
  ------------ --------------------------
  ----------- ---
  --------- ----------
  ----------- ---
  --------------- -
    ------------ ----------
    -------- ----------
    ---------- ----------
    ------ ---------
  --
  ------------------ -
    -------------- -----------
    ----------- ----------
    ----------------- -----------------
    ---------------------- ---------
    ----------- ---------
    ------------- ---------
    ------------- ----------
    ------------------------ ----------
    -------------- --------
  --
  ---------- -
    ------ ----- ----- -- ---- --------- ------- -- ---- -------
    -------- ----- --------- ------- -- ---- -------- ---
    -------- ----- --------- -- ---- ------------
    ------------ ----------
    ------------- --------------- ------
    ------- ------- ------- ----- ---------------- -------------- ----- ------------ ----- ---------
    ------------ ----- ------
    -------- --- --- -------
    ------- ----- --- -------
    ----------- --------------- ---------
  --
  --------- -
    -------- -
      ----------------- -
        ------- ----------------
        --------------- -----------------------------------------
      --
      --------- -
        -
          ------- ---------------------------------
          --------- -
            ------- ------------------
            ------------ ----------------------------
            ------- ---------------------------
          -
        --
        -
          ------- ----------------------------
          ------------ ----------
        --
        -
          ------- ----------------------------
          --------- --
        --
        -
          ------- ----------------------------
          --------- --
        -
      --
      ---------- -
        -
          ---------------------------------
          -
            ------------- ---------------------------
            ----------- -
              --------- -------------------------------
              -------------- -- ------- ----------------------- ----- -------------------------------- ------- ------- --
            -
          -
        -
      -
    -
  -
-
  • dependencies:应用程序的依赖包信息。
  • devDependencies:开发环境的依赖包信息。
  • scripts:自定义命令脚本。
  • config.forge:配置 Electron Forge 插件,可以自动生成安装包和构建应用程序。

开发

主进程和渲染进程

在 Electron 中,主进程和渲染进程是不同的进程,主进程是一个 Node.js 进程,负责管理整个应用程序的生命周期和与操作系统的交互,渲染进程是一个 Chromium 进程,负责呈现我们的页面。这种架构可以在很大程度上提高我们开发的效率。

预加载文件

在 Electron 中,预加载文件是指运行在主进程和渲染进程之间的脚本文件,可以在这里加载一些 Node.js 模块和 API。比如我们可以在预加载文件中注入 nodeIntegrationtrue,使得渲染进程可以通过 window.require 来使用 Node.js 模块。

-- -------------------- ---- -------
-- ----------
------ - -------------- ----------- - ---- -----------

-------------------------------------- -
  ------------- ------- -------- ------ -
    ------------------------- ---------
  -
---

------------------------------------------- -- -- -
  --- ------ -- -- --------------------------------------------- -
    ---------------------------- ------- -- -
      -----------------------
      -------------------- -----------------------------------
    ---
  -
---

Vue3

在这个项目中,我们使用 Vue3 作为渲染进程的视图层框架。我们可以通过 npm install vue 来安装 Vue3。

-- -------------------- ---- -------
-- -------
----------
  ------
    ------------ --
  -------
-----------

------- ----------
------ - --------------- - ---- ------

------ ------- -----------------
  ----- ------
  ----------- ---
  ------ ---
  ------------ -
    ------ ---
  -
---
---------

------ ------------
---- -
  ------ -----
  ------- -----
-
--------

构建

我们可以通过以下命令来构建我们的应用程序:

这会生成一个 out 目录,其中包含构建好的应用程序的安装包以及可执行文件。我们可以在不同的操作系统平台上运行它们,以确保应用程序的兼容性。

总结

我们通过本篇文章,学习了如何使用 electron-webpack-ts 这个 npm 包来构建跨平台桌面应用程序。我们了解了 electron-webpack-ts 的目录结构和配置信息,并学习了 TypeScript、Vue3、eslint 以及 Electron Forge 插件的使用方法。尽管 Electron 的学习曲线比较陡峭,但它给予我们完全的自由度去构建强大的桌面应用程序,是值得学习的。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/196224