当前位置:首页 > 技术分析 > 正文内容

手把手教你Electron + Vue实战教程(一)

ruisui883个月前 (02-03)技术分析10


作者:Sufen

转发链接:
https://mp.weixin.qq.com/s/I1pgM_4rhMjS38fLxZKyMw

目录

手把手教你Electron + Vue实战教程(一)本篇

手把手教你Electron + Vue实战教程(二)

手把手教你Electron + Vue实战教程(三)

手把手教你Electron + Vue实战教程(四)

1 为什么要写这个系列教程

相信看到这篇文章的人,都是对Electron感兴趣的, 网上关于Electron的教程其实已经不少了,但是大多都是一些功能点的实现,对于从零开始搭建一个适合自己的项目,估计还是有不少人有点懵逼的。刚好自己也学习Electron一段时间了,想着整理一下自己学习期间的一些笔记和踩坑的地方,从零开始编写一个小项目。一个由浅入深(或者说从入门到放弃)的套路,一步步带你敲代码实现一个小项目,希望能给大家带来一点点启发。

2 项目搭建

网上有个比较火的脚手架electron-vue,github 上 12.2k 的 star,大家应该都听说过或者使用过,但现在我们不使用它,electron-vue是vue-cli2.0的版本,现在都已经出道 4.0 了,再者electron-vue已经很久没有更新,我们可以使用 vue 最新的脚手架加上插件
vue-cli-plugin-electron-builder来搭建项目,项目结构也更加清晰明了。好了不废话了,开撸吧……

2.1 用vue-cli创建一个项目

打开命令行工具,安装 node,安装 yarn,安装vue-cli脚手架,我这里使用的版本是:

MacBook-Pro:~?Bill$?node?-v
v12.16.1
MacBook-Pro:~?Bill$?yarn?-v
1.22.4
MacBook-Pro:~?Bill$?vue?-V
@vue/cli?4.3.1
MacBook-Pro:~?Bill$

vue-cli创建初始化项目:

vue?create?vue-electron-notes

我们选择自定义创建:

Vue?CLI?v4.3.1
??Please?pick?a?preset:
??default?(babel,?eslint)
??Manually?select?features

我们选择自定义创建,使用babel(语法编译器)、Router(路由)、CSS Pre-processors(css预处理器)、Linter / Formatter(代码风格、格式校验):

Vue?CLI?v4.3.1
??Please?pick?a?preset:?Manually?select?features
??Check?the?features?needed?for?your?project:
???Babel
???TypeScript
???Progressive?Web?App?(PWA)?Support
???Router
???Vuex
???CSS?Pre-processors
???Linter?/?Formatter
???Unit?Testing
???E2E?Testing

router我们使用history模式,输入y,进入下一步:

Vue?CLI?v4.3.1
??Please?pick?a?preset:?Manually?select?features
??Check?the?features?needed?for?your?project:?Babel,?Router,?Vuex,?CSS?Pre-processors,?Linter
??Use?history?mode?for?router??(Requires?proper?server?setup?for?index?fallback?in?production)?(Y/n)?y

css预处理器我这里选择Less,大家也可以选择自己喜欢的Sass、Stylus:

Vue?CLI?v4.3.1
??Please?pick?a?preset:?Manually?select?features
??Check?the?features?needed?for?your?project:?Babel,?Router,?Vuex,?CSS?Pre-processors,?Linter
??Use?history?mode?for?router??(Requires?proper?server?setup?for?index?fallback?in?production)?Yes
??Pick?a?CSS?pre-processor?(PostCSS,?Autoprefixer?and?CSS?Modules?are?supported?by?default):
??Sass/SCSS?(with?dart-sass)
??Sass/SCSS?(with?node-sass)
??Less
??Stylus

选择ESLint代码检查工具,我这里选择的是“ESLint + Airbnb config”,强烈建议大家一定要在项目内使用ESLint,一直用一直爽,懂的自然懂……该有的规范还是要遵循的:

Vue?CLI?v4.3.1
??Please?pick?a?preset:?Manually?select?features
??Check?the?features?needed?for?your?project:?Babel,?Router,?Vuex,?CSS?Pre-processors,?Linter
??Use?history?mode?for?router??(Requires?proper?server?setup?for?index?fallback?in?production)?Yes
??Pick?a?CSS?pre-processor?(PostCSS,?Autoprefixer?and?CSS?Modules?are?supported?by?default):?Less
??Pick?a?linter?/?formatter?config:
??ESLint?with?error?prevention?only
??ESLint?+?Airbnb?config
??ESLint?+?Standard?config
??ESLint?+?Prettier

选择什么时候执行ESLint检查,我这里两个都选了,保存时检查“Lint on save”,向仓库提交代码时也检查“Lint and fix on commit”,不符合规范的代码我们不允许提交到仓库:

Vue?CLI?v4.3.1
??Please?pick?a?preset:?Manually?select?features
??Check?the?features?needed?for?your?project:?Babel,?Router,?Vuex,?CSS?Pre-processors,?Linter
??Use?history?mode?for?router??(Requires?proper?server?setup?for?index?fallback?in?production)?Yes
??Pick?a?CSS?pre-processor?(PostCSS,?Autoprefixer?and?CSS?Modules?are?supported?by?default):?Less
??Pick?a?linter?/?formatter?config:?Airbnb
??Pick?additional?lint?features:
???Lint?on?save
???Lint?and?fix?on?commit

这里是询问 babel, postcss, eslint这些配置是单独的配置文件还是放在package.json 文件中,这里我们选择“In dedicated config files”单独放置:

Vue?CLI?v4.3.1
??Please?pick?a?preset:?Manually?select?features
??Check?the?features?needed?for?your?project:?Babel,?Router,?Vuex,?CSS?Pre-processors,?Linter
??Use?history?mode?for?router??(Requires?proper?server?setup?for?index?fallback?in?production)?Yes
??Pick?a?CSS?pre-processor?(PostCSS,?Autoprefixer?and?CSS?Modules?are?supported?by?default):?Less
??Pick?a?linter?/?formatter?config:?Airbnb
??Pick?additional?lint?features:?Lint?on?save,?Lint?and?fix?on?commit
??Where?do?you?prefer?placing?config?for?Babel,?ESLint,?etc.??(Use?arrow?keys)
??In?dedicated?config?files
??In?package.json

这里是最后的操作,是否保存该配置,如果你下次需要使用相同的配置,那么可以选择 yes,我这选择 no:

Vue?CLI?v4.3.1
??Please?pick?a?preset:?Manually?select?features
??Check?the?features?needed?for?your?project:?Babel,?Router,?Vuex,?CSS?Pre-processors,?Linter
??Use?history?mode?for?router??(Requires?proper?server?setup?for?index?fallback?in?production)?Yes
??Pick?a?CSS?pre-processor?(PostCSS,?Autoprefixer?and?CSS?Modules?are?supported?by?default):?Less
??Pick?a?linter?/?formatter?config:?Airbnb
??Pick?additional?lint?features:?Lint?on?save,?Lint?and?fix?on?commit
??Where?do?you?prefer?placing?config?for?Babel,?ESLint,?etc.??In?dedicated?config?files
??Save?this?as?a?preset?for?future?projects??(y/N)?no

执行完以上操作,剩下的我们等待项目下载依赖包,vue项目初始化就算搞定了哈。

cd vue-electron-notes进入项目跑一遍yarn serve,这个时候没什么问题就已经成功运行起来了!

2.2 在项目内集成Electron

进入我们项目的根目录,我们执行以下命令来安装插件
vue-cli-plugin-electron-builder

vue?add?vue-cli-plugin-electron-builder

我们选择版本^6.0.0:

???Successfully?installed?plugin:?vue-cli-plugin-electron-builder

??Choose?Electron?Version?(Use?arrow?keys)
??^4.0.0
??^5.0.0
??^6.0.0

这里静静等待安装即可,它会下载electron的依赖文件 60M 左右,过程可能有点长,跟你的网络息息相关……

在这等待安装的过程中,其实我们还可以再唠嗑唠嗑另一种页面可视化安装
vue-cli-plugin-electron-builder的方式,执行以下命令

vue?ui

这个时候会自动打开浏览器页面,然后选择左侧插件菜单,搜索安装插件即可:

我个人更偏向于使用命令安装,更加简单方便快捷,当然不管使用上面哪种安装方法,其结果是一致的。等安装完毕后会重新构建项目架构,在src目录下生成background.js文件,并且还新增了启动命令,如下图:

到这里其实还有一个小问题,插件安装的Electron是 6.0 版本的,但官方最新的版本其实已经到了8.2.5了,为了后续我们可以使用最新的api,我们需要执行命令更新一下版本:

yarn?add?electron@8.2.5?-D

到这一步,我们所有的安装都已经完成了,可以运行程序看效果了,要注意我们现在启动项目的命令已经变成这个了:

yarn?electron:serve

这个时候就已经会自动弹出一个程序了,终于大功告成了……

那个,再稍等一下呗,我们去看看刚才执行命令行的地方,是不是有这个警告??呀:

?DONE??Compiled?successfully?in?1339ms?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????1:52:39?PM

??File??????????????????????Size?????????????????????Gzipped

??dist_electron/index.js????651.77?KiB???????????????148.32?KiB

??Images?and?other?types?of?assets?omitted.

?INFO??Launching?Electron...
(electron)?The?default?value?of?app.allowRendererProcessReuse?is?deprecated,?it?is?currently?"false".??It?will?change?to?be?"true"?in?Electron?9.??For?more?information?please?check?[https://github.com/electron/electron/issues/18397](https://github.com/electron/electron/issues/18397)

有道翻译的结果是:allowrendererprocessreuse的默认值是不赞成的,它当前是“false”。在electron9中,它会变成“true”。(好吧我是个英语渣渣……)

为了解决以上告警,我们需要在主进程文件background.js中添加以下代码:

app.allowRendererProcessReuse?=?true

今天的项目搭建就先到这里,如果你觉得也还可以,就给点赞+关注

推荐Vue学习资料文章:

收集22种开源Vue模板和主题框架「干货」

如何写出优秀后台管理系统?11个经典模版拿去不谢「干货」

手把手教你实现一个Vue自定义指令懒加载

基于 Vue 和高德地图实现地图组件「实践」

一个由 Vue 作者尤雨溪开发的 web 开发工具—vite

是什么让我爱上了Vue.js

1.1万字深入细品Vue3.0源码响应式系统笔记「上」

1.1万字深入细品Vue3.0源码响应式系统笔记「下」

「实践」Vue 数据更新7 种情况汇总及延伸解决总结

尤大大细说Vue3 的诞生之路「译」

提高10倍打包速度工具Snowpack 2.0正式发布,再也不需要打包器

大厂Code Review总结Vue开发规范经验「值得学习」

Vue3 插件开发详解尝鲜版「值得收藏」

带你五步学会Vue SSR

记一次Vue3.0技术干货分享会

Vue 3.x 如何有惊无险地快速入门「进阶篇」

「干货」微信支付前后端流程整理(Vue+Node)

带你了解 vue-next(Vue 3.0)之 炉火纯青「实践」

「干货」Vue+高德地图实现页面点击绘制多边形及多边形切割拆分

「干货」Vue+Element前端导入导出Excel

「实践」Deno bytes 模块全解析

细品pdf.js实践解决含水印、电子签章问题「Vue篇」

基于vue + element的后台管理系统解决方案

Vue仿蘑菇街商城项目(vue+koa+mongodb)

基于 electron-vue 开发的音乐播放器「实践」

「实践」Vue项目中标配编辑器插件Vue-Quill-Editor

基于 Vue 技术栈的微前端方案实践

消息队列助你成为高薪 Node.js 工程师

Node.js 中的 stream 模块详解

「干货」Deno TCP Echo Server 是怎么运行的?

「干货」了不起的 Deno 实战教程

「干货」通俗易懂的Deno 入门教程

Deno 正式发布,彻底弄明白和 node 的区别

「实践」基于Apify+node+react/vue搭建一个有点意思的爬虫平台

「实践」深入对比 Vue 3.0 Composition API 和 React Hooks

前端网红框架的插件机制全梳理(axios、koa、redux、vuex)

深入Vue 必学高阶组件 HOC「进阶篇」

深入学习Vue的data、computed、watch来实现最精简响应式系统

10个实例小练习,快速入门熟练 Vue3 核心新特性(一)

10个实例小练习,快速入门熟练 Vue3 核心新特性(二)

教你部署搭建一个Vue-cli4+Webpack移动端框架「实践」

2020前端就业Vue框架篇「实践」

详解Vue3中 router 带来了哪些变化?

Vue项目部署及性能优化指导篇「实践」

Vue高性能渲染大数据Tree组件「实践」

尤大大细品VuePress搭建技术网站与个人博客「实践」

10个Vue开发技巧「实践」

是什么导致尤大大选择放弃Webpack?【vite 原理解析】

带你了解 vue-next(Vue 3.0)之 小试牛刀【实践】

带你了解 vue-next(Vue 3.0)之 初入茅庐【实践】

实践Vue 3.0做JSX(TSX)风格的组件开发

一篇文章教你并列比较React.js和Vue.js的语法【实践】

手拉手带你开启Vue3世界的鬼斧神工【实践】

深入浅出通过vue-cli3构建一个SSR应用程序【实践】

怎样为你的 Vue.js 单页应用提速

聊聊昨晚尤雨溪现场针对Vue3.0 Beta版本新特性知识点汇总

【新消息】Vue 3.0 Beta 版本发布,你还学的动么?

Vue真是太好了 壹万多字的Vue知识点 超详细!

Vue + Koa从零打造一个H5页面可视化编辑器——Quark-h5

深入浅出Vue3 跟着尤雨溪学 TypeScript 之 Ref 【实践】

手把手教你深入浅出vue-cli3升级vue-cli4的方法

Vue 3.0 Beta 和React 开发者分别杠上了

手把手教你用vue drag chart 实现一个可以拖动 / 缩放的图表组件

Vue3 尝鲜

总结Vue组件的通信

Vue 开源项目 TOP45

2020 年,Vue 受欢迎程度是否会超过 React?

尤雨溪:Vue 3.0的设计原则

使用vue实现HTML页面生成图片

实现全栈收银系统(Node+Vue)(上)

实现全栈收银系统(Node+Vue)(下)

vue引入原生高德地图

Vue合理配置WebSocket并实现群聊

多年vue项目实战经验汇总

vue之将echart封装为组件

基于 Vue 的两层吸顶踩坑总结

Vue插件总结【前端开发必备】

Vue 开发必须知道的 36 个技巧【近1W字】

构建大型 Vue.js 项目的10条建议

深入理解vue中的slot与slot-scope

手把手教你Vue解析pdf(base64)转图片【实践】

使用vue+node搭建前端异常监控系统

推荐 8 个漂亮的 vue.js 进度条组件

基于Vue实现拖拽升级(九宫格拖拽)

手摸手,带你用vue撸后台 系列二(登录权限篇)

手摸手,带你用vue撸后台 系列三(实战篇)

前端框架用vue还是react?清晰对比两者差异

Vue组件间通信几种方式,你用哪种?【实践】

浅析 React / Vue 跨端渲染原理与实现

10个Vue开发技巧助力成为更好的工程师

手把手教你Vue之父子组件间通信实践讲解【props、$ref 、$emit】

1W字长文+多图,带你了解vue的双向数据绑定源码实现

深入浅出Vue3 的响应式和以前的区别到底在哪里?【实践】

干货满满!如何优雅简洁地实现时钟翻牌器(支持JS/Vue/React)

基于Vue/VueRouter/Vuex/Axios登录路由和接口级拦截原理与实现

手把手教你D3.js 实现数据可视化极速上手到Vue应用

吃透 Vue 项目开发实践|16个方面深入前端工程化开发技巧【上】

吃透 Vue 项目开发实践|16个方面深入前端工程化开发技巧【中】

吃透 Vue 项目开发实践|16个方面深入前端工程化开发技巧【下】

Vue3.0权限管理实现流程【实践】

后台管理系统,前端Vue根据角色动态设置菜单栏和路由

作者:Sufen

转发链接:
https://mp.weixin.qq.com/s/I1pgM_4rhMjS38fLxZKyMw

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/789.html

标签: vue url传参
分享给朋友:

“手把手教你Electron + Vue实战教程(一)” 的相关文章

首个支持苹果 M1 Mac 的 Linux 发行版发布,面向用户开放下载

IT之家 3 月 20 日消息,Asahi Linux 是研究 Linux for Apple Silicon macs 的组织群体,3 月 18 日,Asahi Linux 宣布成功在 M1 MacBook Air 笔记本电脑上运行,并开放了 Asahi Linux 的下载安装。Asahi Lin...

代码分支规范

一.gitflow工作流说明:主分支:master,稳定版本代码分支,对外可以随时编译发布的分支,不允许直接Push代码,只能请求合并(pull request),且只接受hotfix、release分支的代码合并。gitlab上做限制。热修复分支:hotfix,针对现场紧急问题、bug修复的代码分...

USB电池充电基础:应急指南

USB为便携设备供电与其串行通信功能一样,已经成为一种标准应用。如今,USB 供电已经扩展到电池充电、交流适配器及其它供电形式的应用。应用的普及带来的一个显著效果是便携设备的充电和供电可以互换插头和适配器。因此,相对于过去每种装置都采用专用适配器的架构相比,目前的解决方案允许采用多种电源进行充电。毋...

Vue中路由router的基本使用

??本文开始我们来给大家介绍在Vue中非常重要的一个内容,就是路由Router什么是路由后端路由:对于普通的网站,所有的超链接都是URL地址,所有的URL地址都对应服务器上对应的资源;前端路由:对于单页面应用程序来说,主要通过URL中的hash(#号)来实现不同页面之间的切换,同时,hash有一个特...

一套代码,多端运行——使用Vue3开发兼容多平台的小程序

介绍Vue3发布已经有一段时间了,从目前来看,其生态还算可以,也已经有了各种组件库给予了支持,但是不管是Vue3还是Vue2都无法直接用来开发小程序,因此国内一些技术团队针对Vue开发了一些多端兼容运行的开发框架,今天来体验一下使用Taro来体验一下使用Vue3开发多平台运行的小程序,以便于兼容各大...

基于Spring Cloud+VUE的多租户小程序商城源码「快速二开可商用」

一、系统介绍JooLun平台是一个专注微信快速二开系统研发的平台,采用Java语言开发,使用的是最新微服务前后端分离技术,目前有公众号和小程序商城两个版本,有公众号后台管理、小程序商城。基于Spring Cloud微服务+VUE实现的核心框架多租户小程序商城源码,核心框架采用SpringBoot2+...