用Electron创建跨平台应用(第二弹)开启多窗口

简介: 记得以前用过一段wps, wps有一个蛋疼的设定令我至今难忘, 那就是不支持多窗口, 这意味着你无法同时查看两篇文档, 对应现实生活中的场景就是, 即使给了你一份材料做对照, 你也会抄的很慢, 因为你需要不停的切换标签, 我当时认为wps的设计者,或许是小时候老师不让撕答案, 所以每次抄答案都得翻页抄, 否则不得劲.

记得以前用过一段wps, wps有一个蛋疼的设定令我至今难忘, 那就是不支持多窗口, 这意味着你无法同时查看两篇文档, 对应现实生活中的场景就是, 即使给了你一份材料做对照, 你也会抄的很慢, 因为你需要不停的切换标签, 我当时认为wps的设计者,或许是小时候老师不让撕答案, 所以每次抄答案都得翻页抄, 否则不得劲...

同理, 对于vscode, atom这类应用, 多窗口是不可或缺的, 而Electron创建多标签也非常的简单,下面是一个演示的demo


这个demo可以额外打开三个窗口, 分别是bilibili.com, youtube.com, local-list.html, 因为Electron本身集成了Chromium内核, 所以在打开bilibili.com后, 点击网站内的内容, 可以再次打开新的窗口

  • index.html

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>开启新的窗口</title>
</head>

<style>
    body {
        padding: 0;
        margin: 0;
        background-color: #FCF6E5;
        text-align: center;
    }
    button {
        height: 80px;
        font-size: 36px;
        border-radius: 6px;
        background-color: #ffffff;
        margin-top: 20px;
    }

    #bilibili{
        color: #E5697A;
    }
    #youtube{
        color: #A84631;
    }
</style>

<body>
    <button id="bilibili">打开B站</button>
    <button id="youtube">打开youtube</button>
    <button id="local-list">打开本地文件local-list.html</button>
</body>


<script>
    const path = require("path");
    const electron = require("electron");

    let BrowserWindow = electron.remote.BrowserWindow;


    let bilibiliWindow = null;
    let youtubeWindow = null;
    let localListWindow = null;

    document.getElementById("bilibili").onclick = function(){

        bilibiliWindow = new BrowserWindow ({width: 1000, height:800})

        bilibiliWindow.loadURL("https://bilibili.com/");

        bilibiliWindow.on("close", function(){
            bilibiliWindow = null;

        })
    }

    document.getElementById("youtube").onclick = function(){

        youtubeWindow = new BrowserWindow ({width: 1000, height:800})

        youtubeWindow.loadURL("https://youtube.com/");

        youtubeWindow.on("close", function(){
            youtubeWindow = null;
        })
    }

    document.getElementById("local-list").onclick = function(){

        localListWindow = new BrowserWindow ({width: 1000, height:800})

        localListWindow.loadURL(`file://${__dirname}/local-list.html`);

        localListWindow.on("close", function(){
            localListWindow = null;
        })
    }
</script>

</html>
  • local-list.html
<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>工程师的五个级别</title>
</head>

<body>
    <style>
    .title {
        font-weight: bold;
        font-size: 36px;
    }

    ol li {
        list-style: none;
        color: #413F43;
        font-size: 26px;
        line-height: 40px;
        position: relative;
    }

    ol li:hover {
        background-color: #FCF6E5;
    }

    ol li:hover:after {
        font-size: 20px;
        border: 1px solid #AB3319;
        border-radius: 5px;
        content: attr(data);
        position: absolute;
        right: 0;
        opacity: 1;
        transition: all 0.2s ease-out;
    }



    </style>
    <div class="title">工程师的五个级别</div>
    <ol>
        <li data="爱迪生、福特、贝尔、香农、理查德.斯托曼">
            第一级:开创一个产业
        </li>
        <li data="迪恩,丹尼斯.里奇,肯·汤普逊">第二级: 能设计和实现别人不能做出的产品</li>
        <li data="张小龙,阮一峰">第三级: 能独立设计和实现产品并且能在市场上获得成功</li>
        <li data="项目主管">第四级: 能领导和带领其他人一同完成更有影响力的工作</li>
        <li data="两年开发经验的工程师">第五级: 能独立解决问题, 完成工程工作</li>
    </ol>
</body>

</html>

如果无法理解上面的代码, 可以查看用Electron创建跨平台应用(第一弹)

小结

在App, 小程序大行其道的今天, 用现有的网站封装一个app还真不是一件有难度的事情, 比如上面的窗口好好美化一下, 打包成一个独立的安装包, 欺骗外行是很容易的, 比如mac版的腾讯视频客户端, mac版的爱奇艺客户端, 基本上就是用的以上的套路, 当然不能总玩套路, 好好利用这项技术, 相信高仿一个atom或vscode也不是很难的事情, 如果你对市面上markdown编辑器不满意,自己动手封装一个markdown编辑器应该也是不难的~

目录
相关文章
|
3月前
|
缓存 JavaScript 前端开发
高效打造跨平台桌面应用:Electron加载服务器端JS
【9月更文挑战第17天】Electron 是一个基于 Chromium 和 Node.js 的开源框架,允许使用 HTML、CSS 和 JavaScript 构建跨平台桌面应用。加载服务器端 JS 可增强应用灵活性,实现代码复用、动态更新及实时通信。通过 HTTP 请求、WebSocket 或文件系统可实现加载,但需注意安全性、性能和兼容性问题。开发者应根据需求选择合适方法并谨慎实施。
163 3
|
1月前
|
安全 前端开发 Windows
Windows Electron 应用更新的原理是什么?揭秘 NsisUpdater
本文介绍了 Electron 应用在 Windows 中的更新原理,重点分析了 `NsisUpdater` 类的实现。该类利用 NSIS 脚本,通过初始化、检查更新、下载更新、验证签名和安装更新等步骤,确保应用的更新过程安全可靠。核心功能包括差异下载、签名验证和管理员权限处理,确保更新高效且安全。
39 4
Windows Electron 应用更新的原理是什么?揭秘 NsisUpdater
|
6月前
|
资源调度 JavaScript 前端开发
IM跨平台技术学习(十一):环信基于Electron打包Web IM桌面端的技术实践
这次借着论证 Web IM端 SDK 是否可以在 Electron 生成的桌面端正常稳定使用,我决定把官方新推出的 webim-vue3-demo,打包到桌面端,并记录了这次验证的过程以及所遇到的问题和解决方法。
106 2
|
2月前
|
安全 前端开发 iOS开发
揭秘 electron-builder:macOS 应用打包背后到底发生了什么?
本文详细介绍了 Electron 应用在 macOS 平台上的打包流程,涵盖配置文件、打包步骤、签名及 notarization 等关键环节。通过剖析 `electron-builder` 的源码,展示了如何处理多架构应用、执行签名,并解决常见问题。适合希望深入了解 macOS 打包细节的开发者。
105 2
|
2月前
|
监控 前端开发 安全
谈谈我做 Electron 应用的这一两年
本文首发于微信公众号“前端徐徐”,作者徐徐分享了过去一两年间开发Electron桌面应用的经验与心得。文章详细介绍了从项目启动、技术选型到具体实施的过程,并探讨了桌面端开发面临的挑战及解决方案,如软件更新、任务队列设计、性能优化等。此外,还列举了一些特殊需求的实现方法,如静默安装、进程禁用等。作者认为,尽管桌面端开发有其独特性,但通过不断探索与实践,仍能显著提升用户体验和技术水平。
180 0
谈谈我做 Electron 应用的这一两年
|
2月前
|
开发框架 JavaScript 前端开发
Electron技术深度解析:构建跨平台桌面应用的利器
【10月更文挑战第13天】Electron技术深度解析:构建跨平台桌面应用的利器
227 0
|
2月前
|
XML 缓存 前端开发
Electron-builder 是如何打包 Windows 应用的?
本文首发于微信公众号“前端徐徐”,作者徐徐深入解析了 electron-builder 在 Windows 平台上的打包流程。文章详细介绍了 `winPackager.ts`、`AppxTarget.ts`、`MsiTarget.ts` 和 `NsisTarget.ts` 等核心文件,涵盖了目标创建、图标处理、代码签名、资源编辑、应用签名、性能优化等内容,并分别讲解了 AppX/MSIX、MSI 和 NSIS 安装程序的生成过程。通过这些内容,读者可以更好地理解和使用 electron-builder 进行 Windows 应用的打包和发布。
185 0
|
4月前
|
容器 iOS开发 Linux
震惊!Uno Platform 响应式 UI 构建秘籍大公开!从布局容器到自适应设计,带你轻松打造跨平台完美界面
【8月更文挑战第31天】Uno Platform 是一款强大的跨平台应用开发框架,支持 Web、桌面(Windows、macOS、Linux)及移动(iOS、Android)等平台,仅需单一代码库。本文分享了四个构建响应式用户界面的最佳实践:利用布局容器(如 Grid)适配不同屏幕尺寸;采用自适应布局调整 UI;使用媒体查询定制样式;遵循响应式设计原则确保 UI 元素自适应调整。通过这些方法,开发者可以为用户提供一致且优秀的多设备体验。
192 0
|
4月前
|
前端开发 JavaScript API
强强联手打造桌面应用新标杆:Angular与Electron的完美融合——从环境搭建到通信机制,全面解析构建跨平台应用的最佳实践与技巧
【8月更文挑战第31天】随着Web技术的进步,开发者们越来越多地采用Web技术来构建桌面应用程序。通过结合使用开源框架Electron及前沿的前端框架Angular,开发者能充分利用JavaScript、HTML和CSS打造出高性能且易维护的跨平台桌面应用。本文将详细介绍如何搭建基于Angular与Electron的开发环境,包括创建Angular项目、安装Electron及相关依赖、配置Electron主进程以及实现Angular应用与Electron间的通信等关键步骤,并最终将应用打包成多平台可执行文件,为读者提供了一套完整的解决方案以快速入门并实践这一强大技术组合。
148 0
|
5月前
|
Rust 前端开发 JavaScript
IM跨平台技术学习(十三):从理论到实践,详细对比Electron和Tauri的优劣
本文主要介绍了目前比较流行的桌面应用跨平台开发技术及其架构,并以实战的方式对比了 Electron 和 Tauri 的优势和劣势,以及桌面跨平台应用开发的技术趋势。
84 0