目录

Electron-Forge-Vue3-项目初始化

目录

Electron-Forge + Vue3 项目初始化

本人对Electron的浅薄理解如下图所示

https://i-blog.csdnimg.cn/direct/70782bbd80ba4d12be8f74c2a1d8ee1d.png

由上图可以,如果你需要开发一个electron应用,你得具备基本的前端开发经验。对于electron相关的知识,建议先了解下基本的窗口操作,比如新建窗口、关闭窗口等简单的操作,这些内容在官方文档都能学到,至于其他的内容,可以在开发过程根据需求翻阅官方文档即可,没必要把时间花在啃文档上。

官方文档:https://www.electronjs.org/zh/

该篇文章主要记录下使用新版Electron推荐的Electron-Forge初始化项目,并与Vue3结合开发

官方内容:https://www.electronforge.io/guides/framework-integration/vue-3

完整项目示例:https://github.com/ylpxzx/electron-forge-project/tree/init_project

官方文档步骤:

https://i-blog.csdnimg.cn/direct/1c0c2e761a0647f88c2b53ecf965ac71.png

https://i-blog.csdnimg.cn/direct/ccaff008896b4eeba4f85db1aae8fd99.png

https://i-blog.csdnimg.cn/direct/a3e280d444504793ae1b65ee15e8b8df.png

初始化后的项目结构如下:

https://i-blog.csdnimg.cn/direct/b6af8000bff9417d9897f132c8433090.png

接下来创建vue项目目录结构:

安装vue-router路由

npm install vue-router

项目结构如下:

https://i-blog.csdnimg.cn/direct/2ab0eaed07ee4f01b621ca60f8866efa.png

  • vue-project/pages/home/index.vue

    <template>
      <h1>😁 首页</h1>
    </template>
    
    <script setup>
    </script>
  • vue-project/router/index.js

    import { createWebHashHistory, createRouter } from 'vue-router'
    
    import HomeView from '@/vue-project/pages/home/index.vue'
    
    const routes = [
      { path: '/', component: HomeView },
    ]
    const router = createRouter({
      history: createWebHashHistory(),
      routes,
    })
    
    export default router;
  • vue-project/App.vue

    <template>
      <h1>🖥️ Hello World!</h1>
      <p>Welcome to your Electron application.</p>
      <p>
        <strong>Current route path:</strong> {{ $route.fullPath }}
      </p>
      <nav>
        <div>
          <RouterLink to="/">Go to Home</RouterLink>
        </div>
      </nav>
      <div style="margin-top: 20px; border: 1px solid grey; padding: 20px; border-radius: 10px;">
        <router-view></router-view>
      </div>
    </template>
    
    <script setup>
    </script>

修改初始化时的项目文件,以便接入vue项目

  • src/renderer.js

    import './index.css';
    import { createApp } from 'vue';
    import router from '@/vue-project/router';
    import App from '@/vue-project/App.vue';
    
    createApp(App).use(router).mount('#app');
  • index.html

    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="UTF-8" />
        <title>Hello World!</title>
      </head>
      <body>
        <div id="app"></div>
        <script type="module" src="/src/renderer.js"></script>
      </body>
    </html>
  • vite.renderer.config.mjs

    import { defineConfig } from 'vite';
    import vue from '@vitejs/plugin-vue';
    import { resolve } from 'path'
    
    // https://vitejs.dev/config
    export default defineConfig({
      plugins: [vue()],
      resolve: {
        alias: {
          '@': resolve(__dirname, './src'),
        }
      }
    });

运行

npm run start

https://i-blog.csdnimg.cn/direct/bb00cce2aead44d1a5337be1b240f1be.png