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

塘厦建设网站腾虎广州网站建设

塘厦建设网站,腾虎广州网站建设,建设银行给税对账在什么网站,邢台网红桥源代码仓库: Github仓库【electron_git】 Commit : bb40040 Github Desktop 页面分析 本节目标: 1、实现类似Github Desktop的「空仓库」提示页 2、添加本地仓库逻辑编写从 Github Desktop 我们看到 他的 主要页面分为三个区域 Head头部区域…

源代码仓库:
Github仓库【electron_git】

Commit :
bb40040

Github Desktop 页面分析

本节目标:
1、实现类似Github Desktop的「空仓库」提示页
2、添加本地仓库逻辑编写

在这里插入图片描述

从 Github Desktop 我们看到 他的 主要页面分为三个区域

  • Head头部区域 (操作分支)
  • Side侧边栏区域 (查看更新的文件)
  • Main主区域 (查看 文件 Diff内容)

在这里插入图片描述

Tip:其实初始化的时候只有一个类似main的界面,这里因为我已经添加过store了,所以有head和side部分。

一、目录搭建及依赖安装

  • Ant Design 官网
  • Redux 官网
  • react-router 官网
  • localforage官网
# 安装依赖
pnpm install antd --save
pnpm install @reduxjs/toolkit react-redux
pnpm add -D sass-embedded
pnpm install react-router-dom# 简化持久化存储 根据 IndexedDB 和 WebSQL 支持进行降级策略
pnpm install localforage

主要文件

在这里插入图片描述

二、IPC 通信模块设计与实现

渲染进程 预处理脚本 主进程 操作系统 调用 window.api.chooseFolder() ipcRenderer.invoke('chooseFolder') 显示文件选择对话框 返回选择的路径 返回路径结果 返回 Promise 结果 更新 Redux 状态 渲染进程 预处理脚本 主进程 操作系统

核心实现流程

1. IPC 模块注册机制

// ipc/index.js
import setupGitIPC from './git'
import setupChooseFileIPC from './operateTheFile'/*** 聚合所有 IPC 通信模块* 新增 IPC 模块需在此处引入并调用*/
export async function setupIPC() {setupGitIPC()setupChooseFileIPC()
}
// main/index.js
import { setupIPC } from '../ipc'app.whenReady().then(() => {setupIPC() // 注册所有 IPC 通信createWindow()// ...其他初始化逻辑
})

2. 文件选择器实现

// operateTheFile/index.js/*** 系统级文件夹选择对话框* @returns {Promise<string|null>} 选择的文件夹路径*/
const chooseFolder = async () => {const result = await dialog.showOpenDialog(mainWindow, {properties: ['openDirectory']})if (result.filePaths.length > 0) {return result.filePaths[0]}
}
const setupChooseFileIPC = () => {ipcMain.handle('chooseFolder', () => {return chooseFolder()})
}
3.预处理层暴露 API
import { contextBridge, ipcRenderer } from 'electron'
import { electronAPI } from '@electron-toolkit/preload'// Custom APIs for renderer
const api = {/*** 打开文件夹选择对话框* @returns {Promise<string|null>}*/chooseFolder: () => {return ipcRenderer.invoke('chooseFolder')}
}

4. 渲染进程调用示例

app.jsx中我们点击button按钮时会调用window.api.chooseFolder唤起原生文件选择器操作文件

function App() {const gitStroe = useSelector((state) => state.gitStore)const dispatch = useDispatch()const outlet = useRoutes(router)// 定义一个异步函数 setRepoPath,用于选择文件夹并设置仓库路径const setRepoPath = async () => {// 调用 window.api.chooseFolder() 弹出文件夹选择对话框,并等待用户选择文件夹const repoPath = await window.api.chooseFolder()// 检查 gitStroe.repoPaths 中是否已经包含选择的文件夹路径if (!gitStroe.repoPaths.some((item) => item.path === repoPath)) {// 如果不包含,则将选择的文件夹路径添加到 gitStroe.repoPaths 中,并更新仓库名称dispatch(setRepoPaths([...gitStroe.repoPaths, { path: repoPath, name: repoPath.split('/').pop() }]))// 设置当前仓库为选择的文件夹名称dispatch(setCurrentRepo(repoPath.split('/').pop()))}}return (<div className="app-container">......// 点击按钮触发 setRepoPath 函数<Buttonicon={<DatabaseOutlined />}size="large"style={{ marginLeft: 20 }}onClick={setRepoPath}>Add Local Repository</Button></div></div>)}</div>)
}export default App
http://www.dtcms.com/a/433261.html

相关文章:

  • 做模具做什么网站做设计学什么英语比较好的网站
  • python做网站商城开发wordpress 网页混乱
  • 网站建设和管理是教什么科目网站建设168
  • 免费搭建永久网站步骤单位网站建设的请示
  • 教研网站建设方案网站设计主色学校
  • 上海网站建设口碑好白熊阅读做网站架构
  • 建设电影网站选服务器怎么选品牌建设情况介绍
  • 网站程序 制作网站建设企业网站价格
  • 建立企业门户网站建设网站前端开发语言
  • 检测网站速度小程序网站建设
  • 杭州自助建站市场监督管理局电话举报电话
  • SSM整合 —— 在Spring中配置MyBatis
  • 成都专业的整站优化贵阳网站建设-中国互联
  • 设计个网站多少钱西安免费网络
  • 计算机网站建设维护的目的wordpress如何更改主页home
  • 外贸网站免费模板怎样给网站加外链
  • 海西州商城网站建设网络服务器是指为网络提供资源
  • 蓝色网站素材用以前用过的域名做网站
  • 建站流程主要有哪些建网站一定要买服务器和域名吗
  • 有做a50期货的网站网站模板之家
  • 旅游网络网站建设方案湘潭正规seo优化
  • 用ps做企业网站分辨率是多少七牛 百度云加速 wordpress
  • 天津企业免费建站建设网站可选择的方案
  • php网站开发背景手机网站模板开发工具
  • 安徽网站开发哪家好简历模板免费下载的网页
  • 深圳模板网站建设公网上服务平台官网入口
  • 建站出海重庆专业网站建设
  • 自己做的网站安全吗网络营销的成功案例
  • 快站是个什么平台最好用的wordpress主题
  • 制作网站策划书手术直播平台