首页 > 其他分享 >Vite + Vue 3 + Electron 中 Express 的集成指南

Vite + Vue 3 + Electron 中 Express 的集成指南

时间:2024-07-15 16:32:30浏览次数:13  
标签:npm Vue app Express Electron Vite

在 Vite + Vue 3 + Electron 中使用 Express

在现代前端开发中,Vite 和 Vue 3 提供了快速的开发体验,而 Electron 则使得我们能够构建跨平台的桌面应用程序。有时,我们需要在 Electron 应用中集成一个后端服务器来处理复杂的逻辑或与数据库交互。Express 是一个轻量级且灵活的 Node.js 框架,非常适合这种需求。在这篇博客中,我们将探讨如何在 Vite + Vue 3 + Electron 项目中集成 Express。

项目结构

首先,我们需要创建一个基本的 Vite + Vue 3 + Electron 项目结构。假设你已经安装了 Node.js 和 npm,接下来我们将一步步创建项目。

1. 初始化项目

# 创建项目文件夹
mkdir vite-vue3-electron-express
cd vite-vue3-electron-express

# 初始化 npm 项目
npm init -y

# 安装 Vite 和 Vue 3
npm install vue@next
npm install vite

# 安装 Electron
npm install electron --save-dev

# 安装 Express
npm install express

2. 配置 Vite

在项目根目录下创建 vite.config.js 文件:

import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';

export default defineConfig({
  plugins: [vue()],
  build: {
    outDir: 'dist',
  },
});

3. 配置 Electron

在项目根目录下创建 main.js 文件,这是 Electron 的主进程文件:

const { app, BrowserWindow } = require('electron');
const path = require('path');

function createWindow() {
  const win = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      preload: path.join(__dirname, 'preload.js'),
    },
  });

  win.loadURL('http://localhost:3000');
}

app.whenReady().then(() => {
  createWindow();

  app.on('activate', () => {
    if (BrowserWindow.getAllWindows().length === 0) {
      createWindow();
    }
  });
});

app.on('window-all-closed', () => {
  if (process.platform !== 'darwin') {
    app.quit();
  }
});

4. 配置 Express

在项目根目录下创建 server.js 文件,这是 Express 的入口文件:

const express = require('express');
const app = express();
const port = 3001;

app.get('/api/hello', (req, res) => {
  res.send('Hello from Express!');
});

app.listen(port, () => {
  console.log(`Express server listening at http://localhost:${port}`);
});

5. 配置 Vue 组件

src 文件夹中创建 App.vue 文件:

<template>
  <div id="app">
    <h1>{{ message }}</h1>
  </div>
</template>

<script>
export default {
  data() {
    return {
      message: '',
    };
  },
  async created() {
    const response = await fetch('http://localhost:3001/api/hello');
    const text = await response.text();
    this.message = text;
  },
};
</script>

<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

6. 启动项目

package.json 中添加以下脚本:

"scripts": {
  "dev": "vite",
  "build": "vite build",
  "serve": "vite preview",
  "electron": "electron .",
  "start": "concurrently \"npm run dev\" \"npm run electron\" \"node server.js\""
}

你需要安装 concurrently 来同时运行多个命令:

npm install concurrently --save-dev

现在,你可以运行以下命令来启动项目:

npm run start

这将启动 Vite 开发服务器、Electron 和 Express 服务器。你应该能够在 Electron 应用中看到来自 Express 服务器的消息。

总结

在这篇博客中,我们展示了如何在 Vite + Vue 3 + Electron 项目中集成 Express。通过这种方式,我们可以在桌面应用程序中使用 Express 处理复杂的后端逻辑和 API 请求。这种组合提供了强大的开发体验和灵活性,使得我们能够快速构建功能丰富的跨平台应用程序。希望这篇博客对你有所帮助,祝你开发愉快!

百万大学生都在用的AI写论文工具,篇篇无重复

标签:npm,Vue,app,Express,Electron,Vite
From: https://www.cnblogs.com/zhizu/p/18303411

相关文章

  • 全面掌握 Vue 路由:从基础到进阶
    标题:全面掌握Vue路由:从基础到进阶在现代前端开发中,单页面应用(SPA)已经成为主流,而路由作为SPA的核心功能之一,起着至关重要的作用。Vue.js作为一个流行的前端框架,其官方路由库vue-router提供了强大且灵活的路由管理功能。本文将深入探讨Vue路由的使用,包括基础配置、动态路......
  • d3.js+vue生成动力图
    本文主要实现了动力图中:    节点的显示;        节点与节点之间关系的连接,以及对应的关系类型的显示;    节点的拖拽;    图谱的缩放1.先上效果:2.以下是完整的代码部分:<template><divref="chart"className="ggraph"></div></templ......
  • 【vue深入学习第2章】Vue.js 中的 Ajax 处理:vue-resource 库的深度解析
    Vue.js中的Ajax处理:vue-resource库的深度解析在现代前端开发中,Ajax请求是与后端进行数据交互的关键技术。Vue.js作为一个渐进式JavaScript框架,提供了多种方式来处理Ajax请求,其中vue-resource是一个较为常用的库。尽管vue-resource在Vue2.x之后不再是官方推荐的......
  • 2024-07-15 记录一则vue网站优化的小技巧
    vite+vue+某框架写的网站可以通过配置vite.config.js中的build.rollupOptions.output.manualChunks来手动分割指定的包到指定的文件夹内,然后在网站入口文件按照需求引入比如:build:{rollupOptions:{output:{manualChunks:{antd......
  • vue3中的props和emit
    首先我们要明确props和emit是在父子组件(嵌套组件)中使用的。想要在父组件中渲染出子组件里的内容,需要在父组件中导入子组件,并在模板中渲染子组件。那父子组件中如何通信呢?就需要使用到props和emit。props当子组件要接受父组件传递的数据信息时,也可以说是父组件传递数据给子......
  • vue ui + 项目创建 (基于vue脚手架创建项目)
    =======================注意全程都不要关闭cmd窗口========================= 在想要创建项目的文件目录输入cmd回车,再输入vueui (如果出现报错,可能是因为有hadoop,存在hadoop的环境变量会报错,但也能打开网页)出现下图创建——》在此创建新项目 如下图,项目名不要有中文......
  • Spring Boot Vue 毕设系统讲解 11【协同过滤方法教学】
    目录1.基础知识用户基于的协同过滤(User-basedCF)物品基于的协同过滤(Item-basedCF)优缺点实际应用2.项目功能实战1.基础知识协同过滤(CollaborativeFiltering,CF)是一种广泛应用于推荐系统中的算法,它通过分析和利用用户与物品之间的交互信息来发现用户可能感兴趣......
  • 【vue深入学习第1章】探索 Vue 2 的生命周期:从创建到销毁
    Vue.js是一个渐进式的JavaScript框架,用于构建用户界面。理解Vue的生命周期是掌握这个框架的关键之一。在这篇博客中,我们将深入探讨Vue2的生命周期,并通过代码示例来展示每个生命周期钩子的作用。Vue实例的生命周期Vue实例的生命周期可以分为四个主要阶段:创建阶段:初始......
  • Vue3+Element Plus 使用sortablejs对el-table表格进行拖拽
    sortablejs官网:点击跳转一、安装sortablejsnpminstallsortablejs--save二、 页面按需引入importSortablefrom'sortablejs';三、组件方法1.temlate:<template><el-tableref="tableHeader":data="tableData"row-key="id"style=&quo......
  • vue3+Element Plus 自定义表格单选 多选
    项目背景:用vue3+elementplus做一套考试系统功能场景:添加试题中分为客观题、主观题两种类型,在客观题会出现单选题、多选题两种类型就会导致单选题只能勾选一个答案、多选题能勾选多个答案。效果图废话不说直接上代码<el-buttonclass="btn"icon="Plus"plainst......