新星计划 Electron+vue2 桌面应用 2 项目编写

这篇具有很好参考价值的文章主要介绍了新星计划 Electron+vue2 桌面应用 2 项目编写。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

练手的项目,需求简单,打算做平面设计社交类的软件。

一、需求

练手用,简单处理,写个简单的记事本,本地保存txt,能导出为其他格式的文件。

获取用户的网卡地址用于数据加密,本地保存加密后的文件,导出为明文数据。

可以选择系统样式、自定义日志路径,可见软件信息(版本等)。

二、涉及vue插件

vue 使用版本2;vue-router 使用 3;vuex 使用 3.6.2。

npm install vue-router@3
npm install vuex@3.6.2

npm view 名字 versions --json //查看版本
npm view 名字 version --json //查看最新版本

npm install vue2-editor //富文本框
npm install vant@latest-v2//vant

三、涉及api使用

果然呀,不出bug都没啥可写的。前端基础不好,有bug要调好久……

1、工具栏菜单

这个按照官网写就好,网址:Menu | Electron

不会报啥错,但是项目结果可以改下。

项目结构:

-dist  //编译后的vue文件
-electron //electron相关文件
    menu.js //菜单设置 electron的main.js 引入
-src  //vue文件
    -static //存放静态文件
        electron_common.js //vue中关于electron的js 
        //这文件中不要引入electron 有可能报错 反正我是不会改……
        main.js //vue入口文件
preload.js //主线程和渲染线程桥接文件
mian.js //electron入口文件 

//electron main.js
const { app,BrowserWindow,ipcMain,Menu, ipcRenderer } = require('electron');


const path = require('path');
const url = require('url');

//引入主进程操作js
require('./electron/menu')//工具栏菜单


let mainWindow;
function createWindow() {
    ……
}
//menu.js 菜单模板官网上有
const { Menu } = require('electron');
//设置菜单
const template =[
    ……
];
const menu = Menu.buildFromTemplate(template);
Menu.setApplicationMenu(menu);

2、右键菜单

这菜单调了好久……但道理其实挺简单。

先说官网:Menu | Electron

新星计划 Electron+vue2 桌面应用 2 项目编写

 按照官网这个教程,联系它的前后文,renderer是被index.html调用,在vue2项目中应该是引入到app中的,在public/index.html中引入不知是否可行,没试过。

在我这个例子中相当于./src/static/electron_common.js,在vue的main.js中应该是./static/electron_common.js,/src/main.js中"./"指的是"/src/"。

使用ipcRenderer需要引入electron,vue编译的时候回报“fs”找不到,查了下原因,大概是node的问题,需要再做配置。试了几个,都是各种报错。我一个主要写后端的……前端基础不好真心头大。

然后根据electron最基础的教程中俩线程的交互,设置main.js监听,终于正常使用,代码如下。

//./src/static/electron_common.js
export const rightclick = async () => {
    window.addEventListener('contextmenu', (e) => {
        e.preventDefault()
        window.electronAPI.rightclick()
    })
}
//./src/main.js
import Vue from 'vue'
import App from './App.vue'
import VueEditor from 'vue2-editor';
import { rightclick } from "./static/electron_common" //加载

rightclick()//运行

Vue.config.productionTip = false
Vue.use(VueEditor);

new Vue({
  render: h => h(App),
}).$mount('#app')


//./preload.js
const { contextBridge, ipcRenderer } = require('electron')

contextBridge.exposeInMainWorld('electronAPI', {
    //test: () => ipcRenderer.invoke('test'),
    rightclick: () => ipcRenderer.invoke('right_click')
})

//./main.js
const { app,BrowserWindow,ipcMain,Menu, ipcRenderer } = require('electron');


const path = require('path');
const url = require('url');

//引入主进程操作js
require('./electron/menu')//工具栏菜单


let mainWindow;
function createWindow() {
    // 创建一个窗口,大小 800 * 600
    mainWindow = new BrowserWindow({
        width: 800, 
        height: 600,
        webPreferences:{
            nodeIntergration:true,
            preload:path.join(app.getAppPath(),"preload.js")
        }
    });
    //ipcMain.handle('test', () => "qweqwe")
    mainWindow.loadFile('index.html')

    mainWindow.loadURL(url.format({
        pathname: path.join(app.getAppPath(),'dist/index.html'),
        protocol: 'file:',//协议
        slashes: true//slashes属性为布尔值,如果协议protocol冒号后根的是两个斜杠(/),那么值为true
    }));
 
    // 自动打开调试台
    mainWindow.webContents.openDevTools({detach: true });   
    mainWindow.on("closed",function(){
        mainWindow = null;
    })
}
//监听
ipcMain.handle('right_click', (event) => {
    const template = [
        {
            label:"复制",
            click:()=>{

            }
        },
        {
            label:"粘贴",
            click:()=>{
                    
            }
        }
    ]
    const menu = Menu.buildFromTemplate(template)
    menu.popup(BrowserWindow.fromWebContents(event.sender))
})
//启动应用加载
app.on('ready', createWindow);    
app.on('window-all-closed', function () {
    if (process.platform !== 'darwin') {
        app.quit();
    }
})
app.on('activate', function () {
        if (mainWindow === null) createWindow();
});

然后每次改完 都要先编译(npm run build)在运行(npm run start),有点麻烦文章来源地址https://www.toymoban.com/news/detail-459613.html

到了这里,关于新星计划 Electron+vue2 桌面应用 2 项目编写的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Electron + Vue3 + Vite + TS 构建桌面应用

    之前是使用React、Electron、TS和webpack来构建桌面应用的。虽然功能齐全,但是打包等等开发的体验不太理想,总感觉太慢了。作为一个开发者,我们总是希望,执行构建命令后,可以快速打包或者启动本地应用,且通过更少的配置,来完成开发体验。 现在的vite已经得到广泛的

    2024年02月14日
    浏览(63)
  • Vue+Electron打包桌面应用(从零到一完整教程)

    切记,整个项目的json文件不能有注释,及时没报错也不行,否则运行命令时还是有问题 参考此视频 1- 1.创建项目 1- 2. 安装依赖运行项目 1- 3.配置Electron 1- 4.修改配置文件 1) vite.config.js 2)main.js(项目根目录新增) 此为electron运行的入口文件 3)preload.js(项目根目录下新增) 4)package

    2024年02月07日
    浏览(55)
  • Vue.js + Electron 的跨平台桌面应用程序开发

    本文介绍了 Vue.js 和 Electron 的基本特点和原理,并分析了它们在桌面应用程序开发中的优势和应用场景。在基于 Vue.js 和 Electron 的桌面应用程序开发实践中,本文详细介绍了项目的搭建和配置,包括环境的准备、项目的初始化和依赖的安装等步骤。然后,本文介绍了使用 Vu

    2024年02月13日
    浏览(104)
  • 基于Electron24+Vite4+Vue3搭建桌面端应用

    一说到创建桌面应用,就不得不提及Electron和Tauri框架。这次给大家主要分享的是基于electron最新版本整合vite4.x构建vue3桌面端应用程序。 之前也有使用vite2+vue3+electronc创建桌面端项目,不过  vue-cli-plugin-electron-builder  脚手架插件构建的项目electron版本只有13.x。如今electron版本

    2024年02月06日
    浏览(71)
  • 使用electron-vite +Vue+ElementPlus开发跨平台桌面应用

    我们的项目是基于Elasticsearch来进行数据的存储与查询的,使用过ES的朋友应该都比较清楚,现在还没有一个比较友好的ES的桌面客户端软件可以和MySQL的桌面客户端软件媲美的,使用ES起来非常麻烦,经常会被吐槽的三个点: 资深测试吐槽:为什么技术选型要选择ES,增删改查

    2023年04月09日
    浏览(92)
  • 使用Electron + Vue3 + TS搭建桌面端应用并可热更新

    以下是必要的技术: Electron 13.0.0 Vue3 + TS Electron-updater Node 16.13.1 Element-plus Less Meansjs 安装Vue-cli(如果未安装): npm install -g @vue/cli 创建Vue3项目: vue create electron-vue3 启动项目: yarn serve 安装Electron: vue add electron-builder 启动项目: yarn electron:serve 如果报错,需要安装ts-loader: yar

    2023年04月26日
    浏览(88)
  • 已经打包好了的vue dist文件夹,如何用electron打包成exe桌面应用

    先在项目根目录下(非dist根目录)安装electron electron-packager 再在项目根目录下(非dist根目录)安装electron-packager 然后在dist文件夹下创建main.js文件,内容为 再创建一个文件package.json 在非dist文件夹(注意,是非dist文件夹,就是原本没打包的项目文件里)的package.json文件里,改

    2024年02月19日
    浏览(55)
  • Vue学习计划-Vue2--VueCLi(二)vuecli脚手架创建的项目内部主要文件分析

    1. 补充: 什么叫单文件组件? 一个文件中只有一个组件 vue-cli 创建的项目中, .vue 的文件都是单文件组件,例如 App.vue 2. 进入分析 1. package.json : 项目依赖配置文件: 如图,我们说主要的属性: name : 项目的名称 version : 项目版本 scripts : 脚本入口 serve : 启动项目命令 build :

    2024年02月04日
    浏览(77)
  • 新星计划打卡学习:VUE3引入element-plus

    目录 1、安装element-plus 2、安装按需导入插件 3、修改配置文件 4、添加页面内容 5、保存并重启项目 官网说要想使用element-plus需要先进行安装,并给出了三种安装方式,我选择了第三种。  报错了:  解决的办法: 原因是没有安装pnpm,看此博主文章进行解决 https://blog.csdn.n

    2024年02月16日
    浏览(70)
  • csdn新星计划vue3+ts+antd赛道——利用inscode搭建vue3(ts)+antd前端模板

    大家好,我是yma16,本文分享利用inscode搭建vue3(ts)+antd前端模板。 2023 新星计划 vue(ts)+antd赛道报名入口:https://bbs.csdn.net/topics/616574177 搭建vue3+ts+antd的指引:认识vite_vue3 初始化项目到打包 InsCode 是一个一站式的软件开发服务平台,从开发-部署-运维-运营,都可以在 InsCode 轻松

    2024年02月16日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包