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

快速创建桌面端(electron-egg)

介绍 | electron-egg

electron-egg: 一个入门简单、跨平台、企业级桌面软件开发框架。

electron-egg是一个基于Electron和Egg.js的框架,可以用于快速构建跨平台的桌面应用程序

1.兼容平台:electron-egg可以在Windows、MacOS和Linux等多个平台上运行。

2.简单易用:electron-egg提供了一些简单易用的API,窗口管理、菜单管理、文件操作等功能。

3.可定制化:electron-egg提供了丰富的插件和扩展机制,方便进行高度定制化。

安装 

# 下载
git clone https://gitee.com/dromara/electron-egg.git# 安装依赖
npm install# 启动
npm run start

目录说明

project
├── package.json npm包配置
├── bulid 打包用的资源和脚本├── icons 软件图标(打包用到)├── extraResources 额外资源目录
├── electron 主进程服务├── addon 插件目录├── example demo插件(代码示例)├── config 配置文件├── config.default.js 默认配置,都会加载├── config.local.js dev环境加载├── config.prod.js 生产环境加载├── encrypt.js 加密配置文件├── builder.json 打包配置├── controller 控制器├── service 业务层├── preload 预加载,在程序启动时加载,如托盘、自动升级等功能要提前加载代码├── jobs 任务
├── frontend 前端目录(demo是用vue编写的)    
├── out 打包后生成的可执行文件├── latest.yml 自动升级文件├── xxx.exe window应用安装包├── xxx.exe.blockmap window应用增量升级包├── xxx.dmg mac应用安装包├── xxx.deb linux应用安装包后缀有多种    
├── logs 日志 
├── main.js 入口文件 
├── public 资源目录├── dist 前端资源会移动到这里,生产环境加载├── electron 业务js加密后的文件├── html 一些模板├── images 一些图片
├── data 内置数据库文件├── system.json 框架使用的数据库├── demo.json 示例json数据库├── sqlite-demo.db 示例sqlite数据库

生命周期

// 引入基础 Application 类
const { Application } = require('ee-core');class Index extends Application {constructor() {super();}/*** core app have been loaded* 加载* config -> service -> controller -> socket -> ready()*/async ready () {// do some things}/*** electron app ready* 加载以下事件* app.on('second-instance')* app.whenReady().then() 该事件会创建 mainWindow* app.on('window-all-closed')* app.on('before-quit')* 然后触发* -> electronAppReady()*/async electronAppReady () {// do some things}/*** main window have been loaded* mainWindow 被创建后,加载* windowReady() -> addon  -> preload*/async windowReady () {// do some things// 延迟加载,无白屏const winOpt = this.config.windowsOption;if (winOpt.show == false) {const win = this.electron.mainWindow;win.once('ready-to-show', () => {win.show();})}}/*** before app close*/  async beforeClose () {// do some things}
}Index.toString = () => '[class Index]';
module.exports = Index;

控制器

const { Controller } = require('ee-core');
const Services = require('ee-core/services');/*** 示例控制器* @class*/
class ExampleController extends Controller {constructor(ctx) {super(ctx);}/*** 所有方法接收两个参数* @param args 前端传的参数* @param event - ipc通信时才有值。详情见:控制器文档*//*** test*/async test (args, event) {// 前端参数const params = args;// 调用serviceconst result = await Services.get('example').test('electron');// 主动向前端发请求// channel 前端ipc.on(),监听的路由const channel = "controller.example.something"// IpcMainInvokeEventevent.reply(channel, {age:21})// IpcMainEventevent.sender.send(`${channel}`, data)// 返回数据const data = {}return data;}
}  

服务层

const { Service } = require('ee-core');
const Services = require('ee-core/services');/*** 示例服务* @class*/
class ExampleService extends Service {constructor(ctx) {super(ctx);}/*** test*/async test (args, event) {let obj = {status:'ok',params: args}// 调用其它serviceServices.get('framework').test('egg');// 主动向前端发请求// channel 前端ipc.on(),监听的路由const channel = "controller.example.something"// controller 传入 event// IpcMainInvokeEventevent.reply(channel, {age:21})// IpcMainEventevent.sender.send(`${channel}`, {age:21})return obj;}
}ExampleService.toString = () => '[class ExampleService]';
module.exports = ExampleService;

 

http://www.lryc.cn/news/251903.html

相关文章:

  • docker配置redis插件
  • 前端入口教程_web01
  • Win7 SP1 x64 Google Chrome 字体模糊
  • read()之后操作系统都干了什么
  • YoloV8改进策略:Swift Parameter-free Attention,无参注意力机制,超分模型的完美迁移
  • Python----练习:使用面向对象实现报名系统开发
  • 1.什么是html
  • GeoServer漏洞(CVE-2023-25157)
  • 一个完整的手工构建的cuda动态链接库工程 03记
  • rdf-file:SM2加解密
  • harmonyOS学习笔记之@Styles装饰器与@Extend装饰器
  • GateWay的路由与全局过滤器
  • MuleSoft 中的细粒度与粗粒度 API
  • 【笔记】2023最新Python安装教程(Windows 11)
  • Android Wifi断开问题分析和802.11原因码
  • 【Cell Signaling + 神经递质(neurotransmitter) ; 神经肽 】
  • 当springsecurity出现SerializationException问题
  • [SaaS] 广告创意中stable-diffusion的应用
  • 第八节HarmonyOS @Component自定义组件的生命周期
  • 【Openstack Train安装】五、Memcached/Etcd安装
  • 29 kafka动态配置
  • JIRA部分数据库结构
  • RK3568平台开发系列讲解(Linux系统篇) dtb 到 device_node 的转化
  • 屏幕的刷新率和分辨率
  • 面试官:请说说JS中的防抖和节流
  • [足式机器人]Part4 南科大高等机器人控制课 Ch00 课程简介
  • SSM项目实战-登录验证成功并路由到首页面,Vue3+Vite+Axios+Element-Plus技术
  • Python----网络爬虫
  • 【微信小程序】上传头像 微信小程序内接小程序客服
  • 【c++随笔15】c++常用第三方库