创建Electron项目

一、使用vite 构建 electron项目

复制代码
npm init vite@latest
Need to install the following packages:
  create-vite@latest
Ok to proceed? (y) y
√ Project name: ... CertificateDownload
√ Package name: ... certificatedownload
√ Select a framework: >> Vue
√ Select a variant: >> TypeScript

Scaffolding project in E:\electron\CertificateDownload...

Done. Now run:

  cd CertificateDownload
  npm install
  npm run dev

按说明输入如下命令

cd CertificateDownload

npm install

npm run dev

复制代码
  VITE v4.4.6  ready in 565 ms

  ➜  Local:   http://127.0.0.1:5173/
  ➜  Network: use --host to expose
  ➜  press h to show help

安装electron

复制代码
npm install electron -D
npm install vite-plugin-electron -D

如果提示

复制代码
error command failed

error command C:\Windows\system32\cmd.exe /d /s /c node install.js

可能是没有python环境,需要自行安装,或者通过下面方式进行安装

使用cnpm i electron --save-d进行安装,提示

√ All packages installed (72 packages installed from npm registry, used 2m(network 4s), speed 591.99kB/s, json 70(1.16MB), tarball 1.4MB)

如果

如图所示 当执行npm i electron -D会一直卡在这个地方

解决办法 使用cnpm

复制代码
cnpm install electron -D
cnpm install vite-plugin-electron -D
npm install -g cnpm --registry=https://registry.npm.taobao.org

安装成功

根目录新建 electron / index.ts

修改vite.config.ts 配置文件

复制代码
import  { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import electron from 'vite-plugin-electron'
// https://vitejs.dev/config/
export default defineConfig({
  plugins: [vue(), electron({
    main: {
      entry: "electron/index.ts"
    }
  })]
})

编写代码 electron / index.ts

复制代码
import { app, BrowserWindow } from 'electron'
import path from 'path'
//app 控制应用程序的事件生命周期。
//BrowserWindow 创建并控制浏览器窗口。
 
let win: BrowserWindow | null;
//定义全局变量获取 窗口实例
 
const createWindow = () => {
    win = new BrowserWindow({
        //
        webPreferences: {
            devTools: true,
            contextIsolation: false,
            nodeIntegration: true
            //允许html页面上的javascipt代码访问nodejs 环境api代码的能力(与node集成的意思)
        }
    })
    if (app.isPackaged) {
        win.loadFile(path.join(__dirname, "../index.html"));
    } else {
//VITE_DEV_SERVER_HOST 如果是undefined 换成  VITE_DEV_SERVER_HOSTNAME
        win.loadURL(`http://${process.env['VITE_DEV_SERVER_HOST']}:${process.env['VITE_DEV_SERVER_PORT']}`)
    }
}
//isPackage 不好使换下面的
  //  if(process.env.NODE_ENV != 'development'){
      //  win.loadFile(path.join(__dirname, "../index.html"));
  //  }else{
        //win.loadURL(`http://${process.env['VITE_DEV_SERVER_HOSTNAME']}:${process.env['VITE_DEV_SE//RVER_PORT']}`)
   // }
//在Electron完成初始化时被触发
app.whenReady().then(createWindow)

配置package json 增加main 字段type 去掉

复制代码
{
  "name": "certificatedownload",
  "private": true,
  "version": "0.0.0",
  "main": "electron/index.ts",
  "scripts": {
    "dev": "vite",
    "build": "vue-tsc && vite build",
    "preview": "vite preview",
    "start": "electron ."
  },
  "dependencies": {
    "vue": "^3.3.4"
  },
  "devDependencies": {
    "@vitejs/plugin-vue": "^4.2.3",
    "electron": "^25.3.1",
    "typescript": "^5.0.2",
    "vite": "^4.4.5",
    "vite-plugin-electron": "^0.12.0",
    "vue-tsc": "^1.8.5"
  }
}

将start修改为"start": "electron"

运行npm run start

环境没有问题

将start修改为"start": "electron ."

扩展

如果直接快速新建一个electron项目

复制代码
git clone https://github.com/electron/electron-quick-start
cd electron-quick-start
npm install
npm start
相关推荐
JNU freshman3 分钟前
vue 之 import 的语法
前端·javascript·vue.js
剑亦未配妥4 分钟前
Vue 2 响应式系统常见问题与解决方案(包含_demo以下划线开头命名的变量导致响应式丢失问题)
前端·javascript·vue.js
爱吃的强哥7 分钟前
Vue2 封装二维码弹窗组件
javascript·vue.js
凉柚ˇ7 分钟前
Vue图片压缩方案
前端·javascript·vue.js
慧一居士7 分钟前
vue 中 directive 作用,使用场景和使用示例
前端
慧一居士9 分钟前
vue 中 file-saver 功能介绍,使用场景,使用示例
前端
ByteCraze22 分钟前
秋招被问到的常见问题
开发语言·javascript·原型模式
渣哥39 分钟前
从代理到切面:Spring AOP 的本质与应用场景解析
javascript·后端·面试
文心快码BaiduComate1 小时前
文心快码3.5S实测插件开发,Architect模式令人惊艳
前端·后端·架构
UIUV1 小时前
JavaScript代理模式实战解析:从对象字面量到情感传递的优雅设计
javascript