# aurora-database **Repository Path**: aurora-momoc/aurora-database ## Basic Information - **Project Name**: aurora-database - **Description**: 对标navicat竞品,超越navicat,重要的是开源免费免费!!!! - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-12-06 - **Last Updated**: 2024-01-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # electron-vite-vue 🥳 Really simple `Electron` + `Vue` + `Vite` boilerplate. [![GitHub Build](https://github.com/electron-vite/electron-vite-vue/actions/workflows/build.yml/badge.svg)](https://github.com/electron-vite/electron-vite-vue/actions/workflows/build.yml) [![GitHub Discord](https://img.shields.io/badge/chat-discord-blue?logo=discord)](https://discord.gg/sRqjYpEAUK) ## Features 📦 Out of the box 🎯 Based on the official [template-vue-ts](https://github.com/vitejs/vite/tree/main/packages/create-vite/template-vue-ts), less invasive 🌱 Extensible, really simple directory structure 💪 Support using Node.js API in Electron-Renderer 🔩 Support C/C++ native addons 🖥 It's easy to implement multiple windows ## Quick Setup ```sh # clone the project git clone https://github.com/electron-vite/electron-vite-vue.git # enter the project directory cd electron-vite-vue # install dependency npm install # develop npm run dev ``` ## Debug ![electron-vite-react-debug.gif](https://github.com/electron-vite/electron-vite-react/blob/main/electron-vite-react-debug.gif?raw=true) ## Directory ```diff + ├─┬ electron + │ ├─┬ main + │ │ └── index.ts entry of Electron-Main + │ └─┬ preload + │ └── index.ts entry of Preload-Scripts ├─┬ src │ └── main.ts entry of Electron-Renderer ├── index.html ├── package.json └── vite.config.ts ``` ## FAQ - [C/C++ addons, Node.js modules - Pre-Bundling](https://github.com/electron-vite/vite-plugin-electron-renderer#dependency-pre-bundling) - [dependencies vs devDependencies](https://github.com/electron-vite/vite-plugin-electron-renderer#dependencies-vs-devdependencies) 操作栏目工具: 链接 、 新建查询(默认选中当前数据库,否则值选择链接源) 1、先完成mysql基本的功能,查询修改,sql语句的执行。 (1)数据源| 连接列表管理,一些操作:{关闭链接、打开链接、编辑链接、创建数据库} (2)数据库操作:{删除、编辑、新建查询、导出等等操作} (2)sql执行,select update delete create 含一些查询结果, sql记录,sql保存到查询中 (3) 新建表,{字段、索引、触发器、设置(选项)、注释、sql预览} 表操作:打开、新建表、关闭 2、智能提示,sqlLite存储一些配置信息。 3.数据库链接管理,菜单功能 4.适配monogodb 5.适配redis # 以C++ JNI方式签入jvm https://github.com/SW-Fantastic/electron-with-javavm/tree/0.1 内嵌jre方式: ```js /* 为了让 JVM 程序随 Electron 应用的启动和关闭而开启和关闭,您可以在 Electron 的主进程中设置 JVM 程序的启动和退出逻辑。 Electron 应用的初始化通常在 main.js(或 index.js)文件中进行,而当 Electron 应用准备退出时,会发出 will-quit 或 before-quit 事件。基本步骤如下: 1. **启动 JVM 程序:** 在 Electron 应用初始化时,与之前您提到的方法一样,使用 child_process 模块启动 JVM 程序。 2. **关闭 JVM 程序:** 监听 Electron 应用的退出事件,并且在这个事件中结束之前启动的 JVM 进程。使用 child.on('close', callback) 来确保 JVM 进程已经结束。如果您需要优雅地关闭 JVM 程序,可能需要发送特定的信号或消息给 JVM 进程。 **启动 JVM 程序的代码:** **/ const { app, BrowserWindow } = require('electron'); const { spawn } = require('child_process'); const path = require('path'); let mainWindow; let javaProcess; function createWindow() { // 创建浏览器窗口 mainWindow = new BrowserWindow({ width: 800, height: 600 }); // 并且为你的应用加载index.html mainWindow.loadFile('index.html'); // 打开开发者工具 // mainWindow.webContents.openDevTools(); // mainWindow关闭时的操作 mainWindow.on('closed', function () { mainWindow = null; }); } function startJavaProcess() { let javaExecutablePath = path.join(__dirname, 'resources', 'jre', 'bin', 'java'); let javaAppPath = path.join(__dirname, 'resources', 'app', 'your-java-application.jar'); javaProcess = spawn(javaExecutablePath, ['-jar', javaAppPath], { cwd: path.join(__dirname, 'resources', 'app') }); javaProcess.stdout.on('data', (data) => { console.log(`stdout: ${data}`); }); javaProcess.stderr.on('data', (data) => { console.error(`stderr: ${data}`); }); } // Electron完成初始化并准备创建浏览器窗口时,调用此方法 app.on('ready', () => { createWindow(); startJavaProcess(); }); // 当所有窗口被关闭后退出 app.on('window-all-closed', () => { // 在 macOS 上,除非用户用 Cmd + Q 确定地退出,否则绝大部分应用及其菜单栏会保持激活。 if (process.platform !== 'darwin') { app.quit(); } }); app.on('activate', () => { // 在macOS上,当点击dock图标并且没有其他窗口打开时,通常在应用程序中重新创建一个窗口。 if (mainWindow === null) { createWindow(); } }); // 监听应用退出事件 app.on('will-quit', () => { // 结束 Java 进程 javaProcess.kill(); // 在这里你可以做一些清理工作 }); // 在此代码中,startJavaProcess 函数负责启动 JVM 进程。然后,在 app.on('ready', ...) 中调用此函数,以确保在 Electron 应用启动时 JVM 进程也被启动。而在 app.on('will-quit', ...) 中监听 Electron 应用退出事件来结束 JVM 进程。 //确保你在退出 Electron 应用的时候调用了 javaProcess.kill() 方法,它会发送一个 SIGTERM 信号给 JVM 进程,让它能够优雅地退出。如果 JVM 进程没有在合理的时间内退出,你可能需要更积极地结束它,比如使用 javaProcess.kill('SIGKILL')。 ``` ### sql编辑器参考 https://gitee.com/web1024cn/vue-sqleditor https://blog.csdn.net/Echo___Echo/article/details/120933602