当前位置: 首页 > news >正文

Electron结合Vue使用说明

Electron结合Vue使用说明

1. 创建Vue项目:

npm init vue

2. 创建Electron项目

npm init electron-app@latest electron-project --template=webpack-typescript

npm install copy-webpack-plugin --save-dev

3. 项目配置

1.配置Vue项目:

1)配置base路径

// vite.config.ts
export default defineConfig({
 plugins: [vue(), vueJsx()],
 resolve: {
   alias: {
     "@": fileURLToPath(new URL("./src", import.meta.url)),
   },
 },
 base: "./", // 新增配置(解决绝对路径导致HTML请求文件失败的问题)
});

2)配置路由为哈希路由

// router/index.ts
import { createRouter, createWebHashHistory } from "vue-router";
import HomeView from "../views/HomeView.vue";

const router = createRouter({
 history: createWebHashHistory(import.meta.env.BASE_URL), // 修改为Hash模式
 routes: [
   {
      path: "/",
      name: "home",
      component: HomeView,
    },
    {
      path: "/about",
      name: "about",
      component: () => import("../views/AboutView.vue"),
    },
   ],
});

export default router;
2.配置Electron项目

1)修改入口文件,将开发环境与Vue结合

// src/index.ts
// 用于Vue开发环境
if(process.env.npm_lifecycle_event === 'start'){
 mainWindow.loadURL(<前端项目地址,如('http://localhost:5174')>);
} else {
 mainWindow.loadURL(MAIN_WINDOW_WEBPACK_ENTRY);
}

2)修改webpack配置,将Vue打包文件整合至Electron打包环境

// webpack.renderer.config.ts
export const rendererConfig: Configuration = {
 module: {rules},
 plugins: [
   // 新增,在打包是将Vue项目整合至Electron
   new CopyPlugin({
     patterns: [
       {
         // 将dist目录文件(排除index.html)拷贝至.webpack/renderer/main_window
         from: "./dist/**",
         to: ({ context, absoluteFilename }) => {
           const relativePath = path
             .relative(context, absoluteFilename)
             .replace(/^dist/, ".");
           const basePath = path.resolve(
             __dirname,
             ".webpack/renderer/main_window"
           );
           return path.resolve(basePath, relativePath);
         },
         globOptions: {
           ignore: ["**/dist/index.html"],
         },
       },
     ],
  }),
  ...plugins,
 ],
 resolve: {
   extensions: [".js", ".ts", ".jsx", ".tsx", ".css"],
 },
};

3)修改forge入口

const config: ForgeConfig = {
packagerConfig: {},
 rebuildConfig: {},
 makers: [
 new MakerSquirrel({}),
   new MakerZIP({}, ["darwin"]),
   new MakerRpm({}),
   new MakerDeb({}),
   ],
 plugins: [
 new WebpackPlugin({
    mainConfig,
     renderer: {
       config: rendererConfig,
       entryPoints: [
         {
           html: "./dist/index.html", // 将HTML文件入口指向Vue打包文件
           js: "./src/renderer.ts",
           name: "main_window",
           preload: {
             js: "./src/preload.ts",
           },
         },
       ],
     },
   }),
 ],
};

4. 开发

1.运行Vue项目
2.运行Electron项目

5. 打包

1.将Vue打包后的 dist 目录复制到Electron工程根目录
2.打包Electron

相关文章:

  • 另一种在ARM/x86架构处理器上部署WebDAV服务器的方法
  • Spring Boot使用宝兰德BES进行改造和部署
  • 分享一个你很可能不知道的Java异常实现的缺陷
  • 六 游戏基础知识和SHAPE
  • 【传输层】概述、复用分用、UDP详解、UDP校验
  • Redis基础学习
  • [附源码]Python计算机毕业设计Django学生宿舍管理系统
  • 51单片机——IO拓展(串转并)-74HC595 小白详解
  • 电力系统潮流计算(牛顿-拉夫逊法、高斯-赛德尔法、快速解耦法)(Matlab代码实现)
  • Apache服务深入学习篇(详细介绍)
  • ICV:2022年中国车载摄像头市场规模有望突破50亿美元大关
  • 适老化产品开发:用科技和智能解决老龄化难题
  • ORB-SLAM2 ---- Tracking::TrackWithMotionModel函数
  • 兄弟机床联网
  • Stable Diffusion模型阅读笔记
  • Maven插件开发
  • 【论文复现】——基于逐点前进法的点云数据精简
  • 微服务框架 SpringCloud微服务架构 22 DSL 查询语法 22.1 DSL 查询分类和基本语法
  • Fairseq代码结构
  • [安装] Doris集群搭建环境
  • 电加热油锅炉工作原理_电加热导油
  • 大型电蒸汽锅炉_工业电阻炉
  • 燃气蒸汽锅炉的分类_大连生物质蒸汽锅炉
  • 天津市维修锅炉_锅炉汽化处理方法
  • 蒸汽汽锅炉厂家_延安锅炉厂家
  • 山西热水锅炉厂家_酒店热水 锅炉
  • 蒸汽锅炉生产厂家_燃油蒸汽发生器
  • 燃煤锅炉烧热水_张家口 淘汰取缔燃煤锅炉
  • 生物质锅炉_炉
  • 锅炉天然气_天燃气热风炉