用Electron来运行Angular

有许多关于如何在Electron中运行Angular的文章,但由于环境和版本的问题,步骤略有不同,令我稍微遇到了一些困难。在此做个备忘录。

顺便提一下,我最终希望实现的目标是通过 Angular 的事件从 Electron 中调用本地文件,突破浏览器无法逾越的障碍。

环境

OS: mac OS Catalina 10.15.4
Angular CLI: 9.1.0
Node: 13.12.0

Angular:
...
Ivy Workspace:

Package                      Version
------------------------------------------------------
@angular-devkit/architect    0.901.0
@angular-devkit/core         9.1.0
@angular-devkit/schematics   9.1.0
@schematics/angular          9.1.0
@schematics/update           0.901.0
rxjs                         6.5.4

建立步骤

创建 Angular 项目

ng new sample1

创建正常。
创建后立即打开/sample1/src/app/app.component.ts文件,因为linter会报错,如果你介意的话,可以翻转手掌,同时滑稽地发出“为什么呢”的发音,然后在空中轻拍一下,然后按照下面的方式进行修正。

import { Component } from '@angular/core';

@Component({
  selector: 'app-root',
  styleUrls: ['./app.component.scss'],
  templateUrl: './app.component.html',
})
export class AppComponent {
  public title = 'sample1';
}

添加 Electron

cd sample1
npm install --save-dev electron@latest

更新されるため、npm のバージョンが 8.2.0 になります。

发现了2个轻微程度的漏洞
运行npm audit fix来修复它们,或查看npm audit获取详细信息。

但是他说过这句话时并没有付诸行动

需要手动审查的两个漏洞无法更新。

因为被说成是如此,所以就照原样。

为 Electron 添加执行 js 的功能

在底部添加 main.js 文件。

const { app, BrowserWindow } = require('electron');
let win;

function createWindow() {

  // ウインドウの作成
  win = new BrowserWindow({
    width: 800
    , height: 400
    , webPreferences: {
      nodeIntegration: true
    }
  })

  // ウインドウに表示する内容
  win.loadFile('dist/sample1/index.html');

  // デバッグ画面表示
  win.webContents.openDevTools();

  // このウインドウが閉じられたときの処理
  win.on('closed', () => {
    win = null;
  })
}

// アプリが初期化されたとき(起動されたとき)
app.on('ready', () => {
  createWindow();
})

// 全ウインドウが閉じられたとき
app.on('window-all-closed', () => {
  if (process.platform !== 'darwin') {
    app.quit();
  }
})

// アクティブになったとき(MacだとDockがクリックされたとき)
app.on('activate', () => {
  if (win === null) {
    createWindow();
  }
})

在 package.json 文件中添加用于 Electron 运行的 js 文件。

{
  "name": "sample1",
  "version": "0.0.0",
  "main": "main.js",
  ≈ 省略 ≈

将package.json文件中添加用于Electron构建的命令。

≈ 省略 ≈
"scripts": {
  ≈ 省略 ≈
  "start:electron": "ng build --base-href ./ && electron ."
},
≈ 省略 ≈

执行

npm run start:electron

开始运行。

electron1.png

下一步是进行事件控制。

广告
将在 10 秒后关闭
bannerAds