百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分类 > 正文

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

ztj100 2025-02-17 15:04 14 浏览 0 评论


作者: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

相关推荐

其实TensorFlow真的很水无非就这30篇熬夜练

好的!以下是TensorFlow需要掌握的核心内容,用列表形式呈现,简洁清晰(含表情符号,<300字):1.基础概念与环境TensorFlow架构(计算图、会话->EagerE...

交叉验证和超参数调整:如何优化你的机器学习模型

准确预测Fitbit的睡眠得分在本文的前两部分中,我获取了Fitbit的睡眠数据并对其进行预处理,将这些数据分为训练集、验证集和测试集,除此之外,我还训练了三种不同的机器学习模型并比较了它们的性能。在...

机器学习交叉验证全指南:原理、类型与实战技巧

机器学习模型常常需要大量数据,但它们如何与实时新数据协同工作也同样关键。交叉验证是一种通过将数据集分成若干部分、在部分数据上训练模型、在其余数据上测试模型的方法,用来检验模型的表现。这有助于发现过拟合...

深度学习中的类别激活热图可视化

作者:ValentinaAlto编译:ronghuaiyang导读使用Keras实现图像分类中的激活热图的可视化,帮助更有针对性...

超强,必会的机器学习评估指标

大侠幸会,在下全网同名[算法金]0基础转AI上岸,多个算法赛Top[日更万日,让更多人享受智能乐趣]构建机器学习模型的关键步骤是检查其性能,这是通过使用验证指标来完成的。选择正确的验证指...

机器学习入门教程-第六课:监督学习与非监督学习

1.回顾与引入上节课我们谈到了机器学习的一些实战技巧,比如如何处理数据、选择模型以及调整参数。今天,我们将更深入地探讨机器学习的两大类:监督学习和非监督学习。2.监督学习监督学习就像是有老师的教学...

Python教程(三十八):机器学习基础

...

Python 模型部署不用愁!容器化实战,5 分钟搞定环境配置

你是不是也遇到过这种糟心事:花了好几天训练出的Python模型,在自己电脑上跑得顺顺当当,一放到服务器就各种报错。要么是Python版本不对,要么是依赖库冲突,折腾半天还是用不了。别再喊“我...

超全面讲透一个算法模型,高斯核!!

...

神经网络与传统统计方法的简单对比

传统的统计方法如...

AI 基础知识从0.1到0.2——用“房价预测”入门机器学习全流程

...

自回归滞后模型进行多变量时间序列预测

下图显示了关于不同类型葡萄酒销量的月度多元时间序列。每种葡萄酒类型都是时间序列中的一个变量。假设要预测其中一个变量。比如,sparklingwine。如何建立一个模型来进行预测呢?一种常见的方...

苹果AI策略:慢哲学——科技行业的“长期主义”试金石

苹果AI策略的深度原创分析,结合技术伦理、商业逻辑与行业博弈,揭示其“慢哲学”背后的战略智慧:一、反常之举:AI狂潮中的“逆行者”当科技巨头深陷AI军备竞赛,苹果的克制显得格格不入:功能延期:App...

时间序列预测全攻略,6大模型代码实操

如果你对数据分析感兴趣,希望学习更多的方法论,希望听听经验分享,欢迎移步宝藏公众号...

AI 基础知识从 0.4 到 0.5—— 计算机视觉之光 CNN

...

取消回复欢迎 发表评论: