用 Vue 建立一个简单的 electron 桌面应用
1. electron简介
2. 工具介绍
3. 实践效果,步骤
1)一个简单的 Electron 桌面应用都是冲 Hello World! 开始的。
以上是使用 electron-vue 超级迅速制作出来的 electron 桌面应用。
2)安装的组件
vue init simulatedgreg/electron-vue white-electron-first
3)build tool choice ?
构建工具的选择,比较先进的是electron-builder。
实际上调试,开发可以直接选择 electron-builder,它支持热更新,像目前大部分在使用的 vue-cli 构建出来的项目一样保存即更新。
如果是简单打包应用就直接选择 electron-packager 就好了,功能比较简单。
参考链接:https://electron.org.cn/vue/building_your_app.html
4) 下一步
> npm i // 装包 > npm run dev // 测试环境运行
就可以有一个初步的Electron桌面应用了。
4. 如何将网站只做成 ELectron 应用?
1)网站页面
to 桌面应用
2)熟悉 node 的朋友都知道,启动一个 node 程序,通常就是 node app.js
之类的。
把这个 Node 应用转换成一个 Electron 应用也是非常简单的,我们只不过是把 node
运行时替换成了 electron
运行时。package.json如下:
{ "script": { "electron": "electron build/electron.js", } }
Electron.js (一般启动项目写在main.js,具体看项目) 这个文件应该怎样写呢,这种基本都是参考成熟项目的,一般简单的如:
// electron.js" const {app, BrowserWindow} = require('electron') // Keep a global reference of the window object, if you don't, the window will // be closed automatically when the JavaScript object is garbage collected. let win function createWindow () { // 创建浏览器窗口。 win = new BrowserWindow({width: 800, height: 600}) // 然后加载应用的 index.html。 win.loadFile('index.html') // 打开开发者工具 win.webContents.openDevTools() // 当 window 被关闭,这个事件会被触发。 win.on('closed', () => { // 取消引用 window 对象,如果你的应用支持多窗口的话, // 通常会把多个 window 对象存放在一个数组里面, // 与此同时,你应该删除相应的元素。 win = null }) } // Electron 会在初始化后并准备 // 创建浏览器窗口时,调用这个函数。 // 部分 API 在 ready 事件触发后才能使用。 app.on('ready', createWindow) // 当全部窗口关闭时退出。 app.on('window-all-closed', () => { // 在 macOS 上,除非用户用 Cmd + Q 确定地退出, // 否则绝大部分应用及其菜单栏会保持激活。 if (process.platform !== 'darwin') { app.quit() } }) app.on('activate', () => { // 在macOS上,当单击dock图标并且没有其他窗口打开时, // 通常在应用程序中重新创建一个窗口。 if (win === null) { createWindow() } }) // 在这个文件中,你可以续写应用剩下主进程代码。 // 也可以拆分成几个文件,然后用 require 导入。
上文代码中有一段win.loadFile('index.html')
的代码,意味着你的入口页面就是 index.html, 就像我们用electron-vue 模板启动的 hello world 一样。
3)我们的 view 应用实际上就是一个 SPA 的页面,打包出来后也会有这个入口index.html 文件。
于是 npm run build
先 build 出 dist 文件后,electron.js 的 index.html 替换成 dist 目录下的 html 文件之后,出现以下问题:打包出来的 css、js 文件访问不到了。
据此文档说是可以解决的 https://blog.csdn.net/m0_37604745/article/details/79303342
应该是应用版本不同,我们项目用的 webpack 找不到以上配置,于是直接改了 index.html 里面的 css,js 引用路径。
由于我们服务加载前必须先访问登陆系统,前端项目在没有配 ha 的情况下,单独的运行个静态前端项目是不行的呢。
然而,还是做到了。
实际也比较简单:直接把这段代码改成
// 然后加载应用的 index.html。 win.loadFile('index.html') // to 本地服务的地址就好了 win.loadUrl('http://localhost:4000')
目前这是最简单的打包一个已有应用成 electron 应该的方法。(笑)
参考资料:
https://www.qcode.in/convert-vue-js-app-native-desktop-app-using-electron/
https://electronjs.org/docs/tutorial/first-app
https://newsn.net/say/electron-vue-demo-mac-builder.html—— from 苏南大叔的《程序如此灵动~》博客
https://www.jianshu.com/p/6b32763195cc
https://www.qcode.in/convert-vue-js-app-native-desktop-app-using-electron/
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
SpringBoot入坑指南之六:使用过滤器或拦截器
开篇 在Web应用中,常常存在拦截全部或部分请求进行统一处理的应用场景,如权限校验、参数校验、性能监控等。 在SpringMVC框架中,我们可以通过过滤器或拦截器实现相关功能,spring-boot-starter-web模块底层实际就是SpringMVC框架,那么在SpringBoot项目中如何使用过滤器或拦截器呢? 过滤器与拦截器的区别 项目 过滤器Filter 拦截器Interceptor 说明 规范定义 Servlet规范中定义,与SpringMVC框架无关。 SpringMVC提供组件之一。 过滤器不依赖于Spring MVC框架。 调用顺序 在Spring DispatchServlet执行前 在Spring DispatchServlet中调用 故过滤器执行会在拦截器之前。 容器资源 无法使用Spring容器资源,如果需要使用,可以通过ApplicationContext上下文对象获取 拦截器本身就是Spring的容器资源,可以通过Ioc进行依赖注 入直接使用容器资源。 过滤器与拦截器的使用 创建项目 创建一个maven项目spring-boot-examples-int...
- 下一篇
Flutter工程解析篇 + 工程代码部分解析记录
在上一篇我们搭建flutter环境之后,并且创建了一个HelloFlutter我们的第一个demo,接下来让我们看一看flutter的工程目录以及创建项目运行代码的部分解析。 首先工程目录如下: 主要分为四个部分,第一个部分是Android,第二个部分是iOS,第三个部分是类似build.gradle的配置文件pubspec.yaml,第四个部分是lib文件夹,里面存放我们编写的基于dart语言的源代码,前两个部分不会涉及到,我们主要是写dart来实现跨平台。 那我们接下来看一下lib下面有一个main.dart的文件,打开之后如下: 首先看 void main() => runApp(MyApp()); 这是程序的入口函数,进来首先会调用runApp方法,这里用到了=>箭头函数和如下格式类似: main(){ return new MyApp(); } Dart中的箭头函数,跟kotlin很像。 其实=> runApp(MyApp()); 等同于 { return new MyApp(); } 那说到这里就要说一下dart的匿名函数和=>箭头函数是怎么声...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Linux系统CentOS6、CentOS7手动修改IP地址
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- Red5直播服务器,属于Java语言的直播服务器
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS7,CentOS8安装Elasticsearch6.8.6