Umrabbit
文章7
标签8
分类3
构建Electron+Vue项目记录

构建Electron+Vue项目记录

一、搭建项目

1、使用vue-cli搭建项目

npm uninstall vue-cli -g 先卸载已有的vue2.x脚手架,因为其无法使用vue create创建项目

npm install vue-cli -g 全局安装vue-cli5.x脚手架

2、使用vue create创建项目

在控制台输入vue create + 你的项目名

vue create desktop_test

选择需要的vue版本(2/3)即可

3、使用electron-builder安装Electron

vue add electron-builder

选择安装版本后,继续安装就报错了

此时要将electron下载地址指向taobao镜像:

npm config set electron_mirror "https://npm.taobao.org/mirrors/electron/"

再次安装

使用指令启动electron(如果此时报错找不到electron模块,npm install 一下即可)

yarn run electron:serve

二、引入组件

想要引入IView组件

首先使用指令安装ivew

npm install iview --save

然后在main.js文件中引入即可

import iView from 'iview'
import 'iview/dist/styles/iview.css'

Vue.use(iView)

三、引入路由

npm install vue-router@3.5.2

由于本次使用的是的Vue2.x,一定一定要指定vue-router@3.x版本,不然会报错!

详情见:“export ‘default‘ (imported as ‘VueRouter‘) was not found in ‘vue-router‘报错分析 (yaotu.net)


新建文件夹Router,与Component文件夹同级,在其中新建index.js文件,引入路由并设置路由跳转

参考文档:(3条消息) vue路由router的基本使用及路由跳转的方式_ꪤ、匿名的博客-CSDN博客_router 跳转


在main.js中也引入一下路由

详情见:Vue报错:Unknown custom element: router-view - did you register the component correctly_Chanel-L的博客-CSDN博客


设置默认路由

参考文档:(3条消息) Vue默认路由_红丽*的博客-CSDN博客_vuerouter默认路由


文件命名报错:Component name “index“ should always be multi-word

新建.eslintrc.js文件,关闭组件命名规则

详情见:(3条消息) 【vue eslint】报错Component name “xxxxx“ should always be multi-word.eslintvue/四种解决方案_wally94的博客-CSDN博客

四、功能实现

1、打开本地文件&读取信息

使用dialog.showOpenDialog()方法

参考文档:

src/views/file.vue · bear/vue3+electron - 码云 - 开源中国 (gitee.com)

(3条消息) electron实现打开本地文件接口(返回文件大小、文件名及文件后缀名和文件流等)_lbn2676043895的博客-CSDN博客


使用fs.stat()方法读取文件大小,单位为字节:

Node.js fs.stat()实例讲解 - 码农教程 (manongjc.com)

node获取单个指定文件得大小 - 升级打怪 - 博客园 (cnblogs.com)

2、实现右键菜单

v-contextmenu通过该包实现

vue-runtime-helpers同时也要装哦

安装参考文档:(4条消息) vue中,右键菜单组件v-contextmenu的使用_viceen的博客-CSDN博客_vue右键菜单组件

基础实现参考文档:【鼠标右击组件】v-contextmenu - WANGHUAN- - 博客园 (cnblogs.com)

具体案例参考文档:(4条消息) vue在el-table内结合v-contextmenu对行添加鼠标右键自定义菜单_Magic cape的博客-CSDN博客_v-contextmenu

🦋常用的鼠标点击方法:

属性名 功能
@click() / @dblclick() 单击事件 / 双击事件
@rightClick() 右击触发事件
@mousedown() / @mouseup() 按下触发 / 抬起触发事件
@mousemove() 当鼠标指针在指定的元素中移动时
移动一个像素,就会发生一次 mousemove事件
@mouseleave() 当鼠标指针离开被选元素时,会发生 mouseleave 事件
@mouseout() 当鼠标指针从元素上移开时,发生 mouseout 事件
@mouseenter() 当鼠标指针进入被选元素时,会发生 mouseenter 事件
@mouseover() 当鼠标指针位于元素上方时,会发生 mouseover 事件

🍁注意:

①与 mouseleave 事件不同,不论鼠标指针离开被选元素还是任何子元素,都会触发 mouseout 事件。

②mouseover 事件在鼠标指针进入被选元素或任意子元素时都会被触发,mouseenter 事件只有在鼠标指针进入被选元素时被触发。

3、绑定属性

实现属性的动态切换,可绑定自定义的也可绑原生的

参考文档:

(4条消息) Vue动态绑定属性—指令v-bind_落雪小轩韩的博客-CSDN博客_vue动态绑定属性值

(4条消息) Vue.js绑定属性v-bind_盛世如恋的博客-CSDN博客_vue绑定属性是变量

4、js数组删除指定下标元素

项目中遇到的情况:需要删除数组对象中指定元素,使用this.files.splice(index,1)方法,注意,前面传入的是数组下标,返回值是被剔除的那个元素。参考文档:(4条消息) JS数组删除指定下标元素_大浩籽的博客-CSDN博客_js数组删除指定下标元素

5、监听数据变化

但是尤其是对象,写在watch里要深度监听,挺耗费性能的,所以尽量不去用

基础用法:vue2.0中watch用法 - 走看看 (zoukankan.com)

6、操作节点

添加/创建元素(4条消息) 如何在DOM中添加元素_站在桥上烤冷面的博客-CSDN博客_添加dom元素

删除元素dom.remove() (4条消息) DOM节点的删除_leejj_520的博客-CSDN博客_dom移除节点

新增结点onclick属性报错(使用addEventListener和setAttribute都不行)使用了dom.onclick=()=>{}才可以了哦

获取结点数量:怎么获取页面dom节点数量_51CTO博客_vue获取dom节点

获取所有元素:(4条消息) JavaScript选择器函数querySelector和querySelectorAll_弯弯的小溪的博客-CSDN博客_queryselector

常用方法:(4条消息) dom元素操作的常用方法(创建、添加、删除、修改属性)_veggie_a_h的博客-CSDN博客_dom 添加属性

注:create了span结点后, 使用结点.innerHTML的方法向里面塞值

本文作者:Umrabbit
本文链接:https://umrabbit.github.io/2022/11/19/ElectronVueRecord/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可
×