构建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中也引入一下路由
设置默认路由
参考文档:(3条消息) Vue默认路由_红丽*的博客-CSDN博客_vuerouter默认路由
文件命名报错:Component name “index“ should always be multi-word
新建.eslintrc.js文件,关闭组件命名规则
¶四、功能实现
¶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的方法向里面塞值
