Angular和Electron入门

来自菜鸟教程
跳转至:导航、​搜索

Electron 是一个流行的框架,可以使用熟悉的 Web 技术(HTML、JavaScript 和 CSS)轻松构建适用于 macOS、Linux 或 Windows 的桌面应用程序。 一些非常流行的桌面应用程序,例如 Visual Studio Code 和 Slack,是使用 Electron 构建的。 在幕后,Electron 使用 Chromium 进行 UI 渲染,使用 Node.js 进行文件系统访问。 由于 Electron 为我们提供了 Web 应用程序的桌面外壳,我们可以使用任何类型的前端 JavaScript 框架来开发桌面应用程序。

在这个简短的指南中,我们将创建一个新的 Angular 应用程序,我们可以使用 Electron 在桌面上启动它。

安装

打开您的终端并在全局范围内安装最新版本的 Angular CLI

npm i -g @angular/cli

导航到您的工作文件夹,让我们创建我们的新 Angular 应用程序,称为 my-app

ng new my-app
cd my-app
npm i -D electron@latest

上面注释的行将安装最新版本的 Electron 作为开发依赖项。

设置和电子输入文件

现在让我们在项目目录的根目录中创建一个 main.js 文件。 该文件将成为我们 Electron 应用程序的入口点,并将包含桌面应用程序的主要 API:

main.js

const { app, BrowserWindow } = require("electron");
const path = require("path");
const url = require("url");

let win;
function createWindow() {
  win = new BrowserWindow({ width: 800, height: 600 });
  // load the dist folder from Angular
  win.loadURL(
    url.format({
      pathname: path.join(__dirname, "/dist/index.html"),
      protocol: "file:",
      slashes: true
    })
  );
  // The following is optional and will open the DevTools:
  // win.webContents.openDevTools()
  win.on("closed", () => {
    win = null;
  });
}
app.on("ready", createWindow);
// on macOS, closing the window doesn't quit the app
app.on("window-all-closed", () => {
  if (process.platform !== "darwin") {
    app.quit();
  }
});

请注意,以上内容基于官方的 electron-quick-start 项目,主要区别在于它正确加载了我们的 Angular 应用程序的入口点。 您可能想要坚持使用 TypeScript,如果是这样,您会在此处找到等效的 TypeScript 快速入门

关于 Electron 和 TypeScript 的说明

由于您将使用 TypeScript 开发 Angular 应用程序,因此您当然也可以选择使用 TypeScript 作为主电子入口文件(main.ts)。 请注意,尽管项目的 package.json 中的 main 键仍应指向相同的 main.js

只需在启动应用程序之前添加 tsc 命令将其编译为 JavaScript。 这样的事情应该可以解决问题:

"electron-tsc": "tsc main.ts && ng build --base-href ./ && electron ."

接下来,更新项目的 package.json 文件,以便它可以查找我们的 Electron 文件作为主要入口点。

包.json

{
  "name": "my-app",
  "version": "0.0.0",
  "main": "main.js", 
  ...

在这里,让我们添加一个 npm 脚本来构建 Angular 应用程序,然后启动 Electron 应用程序:

包.json

"scripts": {
   "electron": "ng build --base-href ./ && electron .",
   ...

–base-href 标志在这里很重要,它向 Angular CLI 指示,在 index.html 文件中,base 标签的 href 属性应该具有 的值。 /


让我们从 Angular 项目的输出路径中删除名称,以便它反映我们在 main.js 文件中的内容:

角.json

...,
"architect": {
  "build": {
    "builder": "@angular-devkit/build-angular:browser",
    "options": {
      "outputPath": "dist",

如果您使用的是 v6 之前的 Angular 版本,您将希望在 outDir 键下对项目的 angular-cli.json 进行更改。

运行应用程序

您的应用程序现已准备就绪! 您可以使用我们创建的 electron npm 脚本启动应用程序:

npm run electron

您应该会看到一个窗口出现,其中包含您的 Angular 应用程序!

这应该足以让您启动并运行。 请继续关注直接从我们的 Angular 应用程序中更深入地使用 Electron API,以及设置热模块重新加载!