前两天我们做了一个网页服务器,接下来我们来帮它加上 GUI 吧!
Electron 是一个用前端技术写桌面应用程序的东西,它基本上跟 pkg 很像,都是把 Node.js 包进去,但 Electron 还多包了一个 Chormium (就是之前说的那个忧郁 Chrome)。
但它的 Node.js 及 Chromium 也不是一般的,而是有稍稍修改过。
Electron 的结构很简单:
我们先来把最简单的 Electron 弄好。
先一样初始化一个专案。
npm i -D electron
"main": "main.js",
"scripts": {
"start": "electron ."
},
把主程序叫做 main.js。
设定 npm start
时执行 electron .
。
主程序就是你的程序开始执行的地方。
const { app, BrowserWindow } = require("electron");
const path = require("path");
app.whenReady().then(() => {
createWindow();
// MacOS 在关掉程序视窗後还是会在背景执行,所以在这种状况下我们也要再建立新的视窗
app.on("activate", () => {
if (BrowserWindow.getAllWindows().length === 0) createWindow();
});
});
app.on("window-all-closed", () => {
// darwin 就是 MacOS,例外是因为它背景执行的特性,不需要直接退出
if (process.platform !== "darwin") app.quit();
});
function createWindow() {
// 建立新视窗
const win = new BrowserWindow({
width: 1000,
height: 800,
// agent.js 是一个类似 Extension 的档案,它可以存取页面以及 Node.js 的东西
webPreferences: { preload: path.join(__dirname, "agent.js") },
});
// 在视窗中载入 app.html
win.loadFile("app.html");
}
程序 ready 之後我们就召唤第一个视窗,然後在其中载入 app.html,且用 agent.js 作联络。
<html>
<head>
<meta charset="UTF-8" />
<link href="./style.css" rel="stylesheet" />
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'" />
<title>Hello, World!</title>
</head>
<body>
<h1>Hello, World!</h1>
<script src="./app.js"></script>
</body>
</html>
body {
background-color: wheat;
}
不是 JavaScript 没什麽好说的。
这个执行绪既可以存取页面,也可以存取一些 Node.js 的东西。
document.addEventListener("DOMContentLoaded", () => {
document.body.innerHTML += `<div id="app">Hello from agent.js!</div>`;
});
这个 JavaScript 就像一般网页的一样,只能存取页面的东西。
document.body.innerHTML += `<div id="app">Hello from app.js!</div>`;
npm start
耶!
以 10/09 20:00 ~ 10/10 20:00 文章观看数增加值排名
+357
LeetCode 双刀流:62. Unique Paths
+135
【Day 26】 实作 - 於 AWS QuickSight 建立 Parameters 以及 Filter 设定
+128
D26 - 「来互相伤害啊!」:站在巨人的肩膀上
+122
Proxmox VE 备份整合方案应用:Proxmox BS
+110
[Python 爬虫这样学,一定是大拇指拉!] DAY25 - 实战演练:多执行绪 (1)
+109
[Python] CNN
+107
Day25-介接 API(三)Google Calendar(III)OAuth 凭证建立与用 Google Calendar API 建立 Google Meet 会议
+107
DAY 25 Full Screen Modal - Follow Us
+106
DAY28: 光速了解与操作NVM
+106
Re: 新手让网页 act 起来: Day25 - useMemo 和 useCallback
>>: Day25. 发动魔法卡,融合 - Composite (下)
eslint 是很有名的 linter ,如果有在写 JavaScript 应该多多少少都会知道,虽...
环境建立 先从这里下载 SystemC 2.3.3 到目标资料夹下(或者从这里下载其他版本) 记得准...
今日要点 》前言 》介绍 Demo 专案 》程序架构研究 前言 前面精选了很多在 Github 上很...
前言: 在经过两个礼拜的内容後,相信大家对写网页也有一定的基础了吧!这两个礼拜我们介绍很了多很好用...
学习目标 这篇内容是纪录阅读官方文件Display a selection list,文章主要内容是...