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

做网站烧钱吗关键词推广价格

做网站烧钱吗,关键词推广价格,搜索网站排名,ecs服务器建设的网站electron入门使用 背景how to start第一步 创建一个vite-vue3项目第二步 装各种依赖第三步 配置vite.config.jspackage.jsonelectron入口 启动重写关闭、隐藏、最大化最小化 背景 最近对electron比较感兴趣,折腾一段时间后有了点眉目,记录一下 how to …

electron入门使用

  • 背景
  • how to start
    • 第一步 创建一个vite-vue3项目
    • 第二步 装各种依赖
    • 第三步 配置
      • vite.config.js
      • package.json
      • electron入口
    • 启动
    • 重写关闭、隐藏、最大化最小化

背景

最近对electron比较感兴趣,折腾一段时间后有了点眉目,记录一下

how to start

第一步 创建一个vite-vue3项目

# 选vue3但是不要用ts,用js会舒服得多
npm create vite -n test-electron

第二步 装各种依赖

# 命令1
npm i electron -d -s
# 命令2
npm install vite-plugin-optimizer --save-dev
# 命令3
npm install vite-plugin-node-polyfills --save-dev
# 命令4
npm install @electron/remote
# 命令5
npm install element-plus --save
# 命令6
npm i vue-router

注意,命令1可能需要反复执行反复失败才会成功,推测是网的原因,而且我自己测试用yarn和pnpm必报错,只有npm才行

第三步 配置

vite.config.js

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import { nodePolyfills } from 'vite-plugin-node-polyfills'
import optimizer from 'vite-plugin-optimizer'// https://vite.dev/config/
export default defineConfig({plugins: [vue(), // 添加 Node.js 内置模块的 polyfillnodePolyfills({include: ['path'],globals: { Buffer: true, global: true, process: true },protocolImports: true,}),optimizer({electron: `const { ipcRenderer } = require('electron'); export { ipcRenderer };`})],build: {rollupOptions: {output: {manualChunks: {// 将第三方库分割到单独的代码块'vendor': ['element-plus'],}}}},server: {port: 8888,cors: true, // 允许跨域hmr: true, // 开启热更新},"base": "./"
})

package.json

{"name": "ele-pro","private": true,"version": "0.0.0","type": "module","main": "electron/main.cjs","scripts": {"dev": "vite","build": "vite build","preview": "vite preview","electron:serve": "vite build && electron ."},"dependencies": {"@electron/remote": "^2.1.2","electron-reload": "^2.0.0-alpha.1","element-plus": "^2.9.7","vue": "^3.5.13","vue-router": "^4.5.0"},"devDependencies": {"@vitejs/plugin-vue": "^5.2.1","electron": "^35.1.3","vite": "^6.2.0","vite-plugin-node-polyfills": "^0.23.0","vite-plugin-optimizer": "^1.4.3"}
}

一定要重点关注入口:“main”: “electron/main.cjs”,和electron启动命令:“electron:serve”: “vite build && electron .”

electron入口

在项目的根目录下新建文件夹/electron。
在文件夹中新建文件main.cjs
注意,一定要是.cjs,不是.js

// 控制应用生命周期和创建原生浏览器窗口的模组
const { app, BrowserWindow, Menu } = require('electron')
const path = require('path')
require('@electron/remote/main').initialize()function createWindow() {// 创建浏览器窗口const mainWindow = new BrowserWindow({width: 1200,height: 800,frame: false, // 隐藏默认的标题栏webPreferences: {// 书写渲染进程中的配置nodeIntegration: true, //开启true这一步很重要,目的是为了vue文件中可以引入node和electron相关的APIcontextIsolation: false, // 可以使用require方法},})require('@electron/remote/main').enable(mainWindow.webContents)let env = 'pro'// 配置热更新if (env == 'pro') {const elePath = path.join(__dirname, '../node_modules/electron')require('electron-reload')('../', {electron: require(elePath),})// 热更新监听窗口mainWindow.loadURL('http://localhost:8888')// 打开开发工具mainWindow.webContents.openDevTools()} else {// 生产环境中要加载文件,打包的版本// Menu.setApplicationMenu(null)// 加载 index.htmlmainWindow.loadFile(path.resolve(__dirname, '../dist/index.html')) // 新增}
}
// 这段程序将会在 Electron 结束初始化
// 和创建浏览器窗口的时候调用
// 部分 API 在 ready 事件触发后才能使用。
app.whenReady().then(() => {// 关闭默认菜单栏Menu.setApplicationMenu(null)createWindow()app.on('activate', function () {// 通常在 macOS 上,当点击 dock 中的应用程序图标时,如果没有其他// 打开的窗口,那么程序会重新创建一个窗口。if (BrowserWindow.getAllWindows().length === 0) createWindow()})
})// 除了 macOS 外,当所有窗口都被关闭的时候退出程序。 因此,通常对程序和它们在
// 任务栏上的图标来说,应当保持活跃状态,直到用户使用 Cmd + Q 退出。
app.on('window-all-closed', function () {if (process.platform !== 'darwin') app.quit()
})

启动

打开两个终端窗口,需要都在该项目的根目录。
先运行npm run dev
再运行npm run electron:serve
这样,electron就能根据vue的内容实时渲染

重写关闭、隐藏、最大化最小化

在vue的根组件App.vue中:

<script setup>
import {Close,FullScreen,ArrowDown
} from '@element-plus/icons-vue'
import { getCurrentWindow } from '@electron/remote'
// 关闭
const closeApp = () => {const currentWindow = getCurrentWindow()currentWindow.close()
}
// 全屏/退出全屏应用
const fullScreenApp = () => {const currentWindow = getCurrentWindow()if (currentWindow.isFullScreen()) {currentWindow.setFullScreen(false)} else {currentWindow.setFullScreen(true)}
}// 最小化应用
const hideApp = () => {const currentWindow = getCurrentWindow()currentWindow.minimize()
}
</script><template><div><div style="padding: 10pt; text-align: right;"><el-button type="warning" size="small" circle :icon="ArrowDown" @click="hideApp"></el-button><el-button type="success" size="small" :icon="FullScreen" circle @click="fullScreenApp" /><el-button type="danger" size="small" :icon="Close" circle @click="closeApp" /></div><router-view></router-view></div>
</template><style scoped>
#app {font-family: Avenir, Helvetica, Arial, sans-serif;color: #2c3e50;
}
</style>

先到这里,后面有什么好玩的继续更新

http://www.dtcms.com/wzjs/496708.html

相关文章:

  • 打电话说帮忙做网站长春网站建设定制
  • 个人网站设计及实现论文怎么做推广
  • wordpress自定义新页面链接抚州seo外包
  • 营销团队名称防城港网站seo
  • 企业网站的开发公司网站优化最为重要的内容是
  • 钓鱼网站的域名怎么不稳定网络安全培训最强的机构
  • 大庆建设中专网站东莞哪种网站推广好
  • 大学生作业代做网站女生读网络营销与电商直播
  • 手机网站应该怎么做百度识图网页版入口
  • 厦门房产网惠州seo博客
  • 乐陵人力资源网站天津网站推广
  • 蓝色系的网站网站开发教程
  • 网站制作接单百度号码认证平台个人号码申诉
  • 湖北省建设银行网站经典软文案例100例
  • 果麦传媒的网站怎么做的今日百度小说排行榜
  • 门户网站如何帮企业做宣传守游网络推广平台登陆
  • 建设网站是否需要一个主机seo搜索引擎优化试题
  • 金华市建设技工学校网站谷歌推广代理
  • 想攻击一个网站怎么做化学sem是什么意思
  • 有那些是做批发的网站搜索引擎优化的作用是什么
  • 晋宁网站建设企业网站建设公司
  • 济宁疫情最新消息今天福州短视频seo网红
  • 个人怎么见个网站小程序seo
  • 模板网站制作多少钱百度网站推广排名优化
  • 北京建机职业技能鉴定中心证书查询seo资源
  • 西安品牌网站建设服务商网络营销的认知
  • 企业邮箱 网站建设百度登录注册
  • 班级网站建设phpapp软件下载站seo教程
  • 株洲网站的建设百度快照是什么意思?
  • 网页制作专业必备招聘seo专员