使用 electron 代理包装 web 网站

本贴最后更新于 2432 天前,其中的信息可能已经物是人非

之前的帖子是:https://hacpai.com/article/1536118267393

简单的说我要包装我的网站到 chrome 里,使得它看上去像是一个桌面应用,并且通过代理的方式进行授权的校验,流程如下

用户打开一个看上去是 app 的东西,看到了是一个指向 http//:localhost 的网站入口,这个网站入口通过本地的转发服务发送 https 请求到真正的外网网站(在这一步进行一些权限的判定,机制很多不述)

在 @88250 的诱导下开始了这个基于 electron 的开发工作

1 https://github.com/nodejitsu/node-http-proxy
既然要用 nodjes,那么就先搞 http 代理,本来想自己写一个,然后一搜索,发现有现成的,而且默认就是支持 http->https, star 数量很不错,文档也清晰 ,5 行代码搞定。

2 https://github.com/simply-coded/electron-navigation
用 electron 包装一个游览器,本来想自己结合 webview 搞什么前进后退,tab 页管理的功能,
结果发现又有现成的,直接拿过来用,这个项目的 star 数很少,感觉不放心,有时间还是研究下原理吧

3 打包,自动更新,这个 electron 都有现成的工具,分分钟搞定

到此,完全实现了我的基本需求,仅仅用了半天就搞定了,大概是我太优秀了吧
当然测试一下还是发现了几个问题

1 在 win10 上有些 png 图片显示异常,这个确实很奇怪,在同事的 win7 电脑上毫无问题,不知道是什么 bug,实在不行让美工全部改成其他图片格式?

2 pdf 显示,这个我让同事去改成用 pdf.js 显示 pdf,我估计应该没问题吧

3 网站的下载的功能:这个确实是个大问题,我们网站提供用户下载动态生成的 excel 文件,在 eletron 里点击下载不会出现像 chrome 那种本地下载底部进度显示,而且过那么 2,3 秒出现保存的弹出框,由于我们的导出 excel 很大,时间就算优化也还是需要 2-3 秒,electron 里面没有 donwload explorer 这个东西,这个解决方案仍旧需要 @88250 的诱导啊

总的来说这个整个工作还是比较顺利的,方案也比较科学,希望给以后要包装网站到本地 app 的人一个启示吧

  • Electron

    Electron 基于 Chromium 和 Node.js,让你可以使用 HTML、CSS 和 JavaScript 构建应用。它是一个由 GitHub 及众多贡献者组成的活跃社区共同维护的开源项目,兼容 Mac、Windows 和 Linux,它构建的应用可在这三个操作系统上面运行。

    15 引用 • 136 回帖 • 4 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • 88250

    我没搞过下载管理,估计需要网站后台配合一下,比如如果是 electron 端就弄个 loading 遮罩之类的,凑合一下..

    1 回复
  • mainlove
    作者

    凑合用 electron-progressbar 配合 electron-dl 实现了。。

    electron 没有什么 download explorer 这种 lib,这么大的需求竟然没人开发个

推荐标签 标签

  • 七牛云

    七牛云是国内领先的企业级公有云服务商,致力于打造以数据为核心的场景化 PaaS 服务。围绕富媒体场景,七牛先后推出了对象存储,融合 CDN 加速,数据通用处理,内容反垃圾服务,以及直播云服务等。

    28 引用 • 226 回帖 • 131 关注
  • 书籍

    宋真宗赵恒曾经说过:“书中自有黄金屋,书中自有颜如玉。”

    78 引用 • 396 回帖
  • Word
    13 引用 • 41 回帖
  • Spark

    Spark 是 UC Berkeley AMP lab 所开源的类 Hadoop MapReduce 的通用并行框架。Spark 拥有 Hadoop MapReduce 所具有的优点;但不同于 MapReduce 的是 Job 中间输出结果可以保存在内存中,从而不再需要读写 HDFS,因此 Spark 能更好地适用于数据挖掘与机器学习等需要迭代的 MapReduce 的算法。

    74 引用 • 46 回帖 • 564 关注
  • C++

    C++ 是在 C 语言的基础上开发的一种通用编程语言,应用广泛。C++ 支持多种编程范式,面向对象编程、泛型编程和过程化编程。

    107 引用 • 153 回帖
  • 小说

    小说是以刻画人物形象为中心,通过完整的故事情节和环境描写来反映社会生活的文学体裁。

    32 引用 • 108 回帖
  • 996
    13 引用 • 200 回帖 • 6 关注
  • 钉钉

    钉钉,专为中国企业打造的免费沟通协同多端平台, 阿里巴巴出品。

    15 引用 • 67 回帖 • 281 关注
  • 阿里巴巴

    阿里巴巴网络技术有限公司(简称:阿里巴巴集团)是以曾担任英语教师的马云为首的 18 人,于 1999 年在中国杭州创立,他们相信互联网能够创造公平的竞争环境,让小企业通过创新与科技扩展业务,并在参与国内或全球市场竞争时处于更有利的位置。

    43 引用 • 221 回帖 • 63 关注
  • 禅道

    禅道是一款国产的开源项目管理软件,她的核心管理思想基于敏捷方法 scrum,内置了产品管理和项目管理,同时又根据国内研发现状补充了测试管理、计划管理、发布管理、文档管理、事务管理等功能,在一个软件中就可以将软件研发中的需求、任务、bug、用例、计划、发布等要素有序的跟踪管理起来,完整地覆盖了项目管理的核心流程。

    6 引用 • 15 回帖 • 16 关注
  • 链滴

    链滴是一个记录生活的地方。

    记录生活,连接点滴

    174 引用 • 3852 回帖 • 1 关注
  • 笔记

    好记性不如烂笔头。

    310 引用 • 794 回帖
  • Excel
    31 引用 • 28 回帖
  • ngrok

    ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道。

    7 引用 • 63 回帖 • 649 关注
  • golang

    Go 语言是 Google 推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发 Go,是因为过去 10 多年间软件开发的难度令人沮丧。Go 是谷歌 2009 发布的第二款编程语言。

    498 引用 • 1395 回帖 • 248 关注
  • 外包

    有空闲时间是接外包好呢还是学习好呢?

    26 引用 • 233 回帖 • 2 关注
  • SEO

    发布对别人有帮助的原创内容是最好的 SEO 方式。

    35 引用 • 200 回帖 • 31 关注
  • JSON

    JSON (JavaScript Object Notation)是一种轻量级的数据交换格式。易于人类阅读和编写。同时也易于机器解析和生成。

    52 引用 • 190 回帖 • 1 关注
  • 分享

    有什么新发现就分享给大家吧!

    248 引用 • 1794 回帖 • 3 关注
  • frp

    frp 是一个可用于内网穿透的高性能的反向代理应用,支持 TCP、UDP、 HTTP 和 HTTPS 协议。

    20 引用 • 7 回帖 • 2 关注
  • Git

    Git 是 Linux Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

    211 引用 • 358 回帖 • 1 关注
  • SQLite

    SQLite 是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是全世界使用最为广泛的数据库引擎。

    5 引用 • 7 回帖
  • Netty

    Netty 是一个基于 NIO 的客户端-服务器编程框架,使用 Netty 可以让你快速、简单地开发出一个可维护、高性能的网络应用,例如实现了某种协议的客户、服务端应用。

    49 引用 • 33 回帖 • 35 关注
  • 人工智能

    人工智能(Artificial Intelligence)是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门技术科学。

    167 引用 • 314 回帖
  • ZeroNet

    ZeroNet 是一个基于比特币加密技术和 BT 网络技术的去中心化的、开放开源的网络和交流系统。

    1 引用 • 21 回帖 • 648 关注
  • IPFS

    IPFS(InterPlanetary File System,星际文件系统)是永久的、去中心化保存和共享文件的方法,这是一种内容可寻址、版本化、点对点超媒体的分布式协议。请浏览 IPFS 入门笔记了解更多细节。

    21 引用 • 245 回帖 • 228 关注
  • TGIF

    Thank God It's Friday! 感谢老天,总算到星期五啦!

    290 引用 • 4494 回帖 • 654 关注