返回

Electron + Typescript + cra,一个Electron应用的搭建模板

前端

大家好,我是程序员小王。今天,我将分享一个使用 Typescript 搭建基于 CRA 的 Electron 模板的方法。Electron 是一种用于构建跨平台桌面应用程序的框架,而 CRA(Create React App)是一个用于创建 React 应用程序的工具。

为什么选择 Electron + Typescript + CRA?

Electron + Typescript + CRA 是一种流行的技术组合,因为它具有以下优点:

  • 跨平台: Electron 允许您使用相同的代码库构建适用于 Windows、Mac 和 Linux 的应用程序。
  • 高性能: Electron 使用 Chromium 作为其底层引擎,这使得 Electron 应用程序具有很高的性能。
  • 可扩展: Electron 应用程序可以轻松地扩展,以添加新功能和集成第三方库。
  • TypeScript: TypeScript 是一种强类型的语言,可以帮助您编写更健壮、更易维护的代码。
  • CRA: CRA 可以帮助您快速轻松地创建 React 应用程序。

搭建步骤

首先,我们需要安装 Electron 和 CRA。您可以使用以下命令安装 Electron:

npm install electron

然后,您可以使用以下命令安装 CRA:

npx create-react-app electron-app

现在,您已经安装了 Electron 和 CRA,可以开始搭建 Electron 模板了。

  1. 在 electron-app 文件夹中,创建一个名为 main.js 的文件。
  2. main.js 文件中,添加以下代码:
const { app, BrowserWindow } = require('electron');

function createWindow () {
  // 创建浏览器窗口
  const win = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      nodeIntegration: true
    }
  })

  // 加载index.html文件
  win.loadFile('index.html')

  // 打开开发工具
  win.webContents.openDevTools()
}

// 当 Electron 完成初始化并准备创建浏览器窗口时,调用 createWindow 函数
app.whenReady().then(createWindow)

// 当所有窗口都关闭时退出应用程序。
app.on('window-all-closed', () => {
  // 在 macOS 上,除非用户用 Cmd + Q 确定性地退出,否则应用程序
  // 会一直运行。
  if (process.platform !== 'darwin') {
    app.quit()
  }
})

app.on('activate', () => {
  // 在 macOS 上,当单击dock图标且没有其他窗口打开时,
  // 应用程序将被重新激活。
  if (BrowserWindow.getAllWindows().length === 0) {
    createWindow()
  }
})
  1. 在 electron-app 文件夹中,创建一个名为 package.json 的文件。
  2. package.json 文件中,添加以下代码:
{
  "name": "electron-app",
  "version": "1.0.0",
  "description": "Electron + Typescript + CRA 应用模板",
  "main": "main.js",
  "scripts": {
    "start": "electron main.js",
    "dev": "electron-rebuild-webpack"
  },
  "dependencies": {
    "electron": "^20.0.0",
    "electron-rebuild-webpack": "^2.0.0",
    "react": "^18.2.0",
    "react-dom": "^18.2.0"
  }
}
  1. 现在,您可以运行以下命令来启动 Electron 应用程序:
npm start

总结

这就是如何使用 Typescript 搭建基于 CRA 的 Electron 模板。我希望本教程对您有所帮助。如果您有任何问题,请随时在评论区留言。