当前位置: 首页 > 知识库问答 >
问题:

vue.js - electron打包后的桌面端能否同时支持外部浏览器访问?

甘兴学
2023-10-26

需求如下:electron打包后的exe不仅能支持桌面端运行,也能支持外部浏览器访问。外部浏览器主要应用于局域网环境下其他电脑通过外部浏览器访问其他电脑上安装的electron应用。

我想了一下,开发时是可以通过外部浏览器访问的,照理说打包后应该也可以魔改支持的。
image.png
另外需要注意的是在渲染线程中应该是不能使用nodejs的api的,除渲染层外应该都是可以的吧?(不确定)

另外我这个需求还有什么更好的方法吗?简单来说桌面端必备,除此支持局域网环境下外部浏览器远程访问

共有3个答案

边银龙
2023-10-26

完全是可行的,但是要做好h5的兼容,某些浏览器无法使用的api需要判断好环境再做处理。甚至可以直接与壳子分离,web页面单独打包发布,electron里面通过loadUrl来引用。

诸葛雅达
2023-10-26

现在的思路有两个,一个是electron的渲染层代码和传统的web代码基本无区别,我用的是vue。所以vue的src层应该是复用的,所以稍微改动一下打包配置应该就可以将打包后的静态资源扔到后端java一起打成jar包。然后就可以在浏览器直接访问了。
桌面端的话还是按照之前electron构建,本机用electron生成的应用。其他pc用外部浏览器访问。
另外还有一点是非常重要的,我这个后端应该是长期运行的,所以electron生成的前端exe也是只作页面展示作用,即使前端关闭了后台还是要运行,所以这样的话感觉这个方案是更合适的。既能保证前端大部分代码同源,又能实现要求。不知道我有没有没考虑到的,欢迎指正

另一个就是electron,使用nodejs构建一个web服务器,访问自己的web层,但是我对这块并不是很熟悉,我看了打包后的静态资源electron好像都是嵌入到exe中的,所以如何做我现在还没有头绪,是否可行也不是很确定

贺君浩
2023-10-26

这个需求是可行的,但实现起来可能会有一些困难。你需要考虑到以下几个问题:

  1. 安全性问题:在 Electron 应用中,渲染进程(渲染线程)是不可以使用 Node.js API 的,这是为了防止恶意代码的执行。这就意味着,如果你想在 Electron 应用中通过外部浏览器进行访问,你需要特别小心处理安全性问题。
  2. 网络设置:你需要确保你的 Electron 应用和外部浏览器可以共享网络。这可能涉及到网络设置和防火墙的设置。
  3. 应用设计:你的 Electron 应用需要设计成可以接受来自外部浏览器的请求,并且能够正确地响应这些请求。这可能需要你对 Electron 的网络编程有一定的理解。

如果你仍然想尝试实现这个需求,我建议你按照以下步骤操作:

  1. 创建 Electron 应用:首先,你需要创建一个 Electron 应用,这个应用需要能够接受来自外部的请求,并且能够处理这些请求。你可能需要使用到 Node.js 的网络编程知识。
  2. 设置网络共享:然后,你需要设置你的 Electron 应用和外部浏览器可以共享网络。这可能涉及到网络设置和防火墙的设置。
  3. 实现外部访问:最后,你需要在 Electron 应用中实现外部访问的功能。这可能涉及到在 Electron 应用中创建一个服务器,这个服务器可以接受来自外部浏览器的请求,并且将请求转发给 Electron 应用处理。

另外,你还可以考虑使用其他的技术来实现这个需求,例如使用 WebSocket 或者 WebRTC 等技术来实现桌面端和浏览器之间的通信。这种方法可能比使用 Electron 和外部浏览器访问更简单,更安全。

 类似资料:
  • Docusaurus 允许网站通过 浏览器列表配置(browserslist configuration) 来定义其要支持的所有浏览器。 目的 网站需要在向后兼容性和文件体积之间做平衡。由于旧的浏览器不支持现代的 API 或语法,因此需要更多代码才能实现相同的功能,这会增加网站的加载时间,从而对所有其他用户造成不利的影响。为权衡起见,Docusaurus 打包工具仅支持浏览器列表中所定义的浏览器版

  • 把jade编译为一个可供浏览器使用的单文件,只需要简单的执行: $ make jade.js 如果你已经安装了uglifyjs (npm install uglify-js),你可以执行下面的命令它会生成所有的文件。其实每一个正式版本里都帮你做了这事。 $ make jade.min.js 默认情况下,为了方便调试Jade会把模板组织成带有形如 __.lineno = 3 的行号的形式。 在浏览器

  • Next.js 支持 IE11 和所有的现代浏览器使用了@babel/preset-env。为了支持 IE11,Next.js 需要全局添加Promise的 polyfill。有时你的代码或引入的其他 NPM 包的部分功能现代浏览器不支持,则需要用 polyfills 去实现。 ployflls 实现案例为polyfills。

  • AdminLTE 与 Bootstrap 4 支持的浏览器一样。Bootstrap 支持 主流平台和浏览器,稳定版在 Windows 上,我们支持 Internet Explorer 10-11 / Microsoft Edge。更多详细信息,请点击此处。 你可以在 我们的 .browserslistrc 文件 找到支持的浏览器情况及其版本: # https://github.com/browse

  • 主要内容:HTML5 浏览器支持,将 HTML5 元素定义为块元素,实例,为 HTML 添加新元素,实例,Internet Explorer 浏览器问题,完美的 Shiv 解决方案,实例你可以让一些较早的浏览器(不支持HTML5)支持 HTML5。 HTML5 浏览器支持 现代的浏览器都支持 HTML5。 此外,所有浏览器,包括旧的和最新的,对无法识别的元素会作为内联元素自动处理。 正因为如此,你可以 "教会" 浏览器处理 "未知" 的 HTML 元素。 甚至你可以教会 IE6 (Windows

  • 看看AMP规范,考虑到定制样式元素对CSS变量的依赖,这意味着当前的浏览器支持范围很窄。请看:我可以使用参考资料吗 我猜非自定义样式有一个“优雅的退路”,因为不理解CSS变量的浏览器会忽略那个CSS。 是否有AMP的浏览器兼容性/支持矩阵?