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

网站建设框架编写目的seo课程在哪培训好

网站建设框架编写目的,seo课程在哪培训好,国外网站问题,疫情最新数据消息国内基于electron27.xreact18搭建电脑端exe后台管理系统模板 electron-react-admin 基于electron27整合vite.jsreact18搭建桌面端后台管理程序解决方案。 前几天有分享electron27react18创建跨平台应用实践,大家感兴趣可以去看看。 https://blog.csdn.net/yanxinyun1990…

基于electron27.x+react18搭建电脑端exe后台管理系统模板

electron-react-admin 基于electron27整合vite.js+react18搭建桌面端后台管理程序解决方案。

前几天有分享electron27+react18创建跨平台应用实践,大家感兴趣可以去看看。
https://blog.csdn.net/yanxinyun1990/article/details/134047329

在这里插入图片描述
在这里插入图片描述

Electron-ReactAdmin支持暗黑/白昼两种主题。

在这里插入图片描述

技术栈

  • 编辑器:vscode
  • 使用技术:electron27+vite^4.4.5+react18+zustand+react-router
  • UI组件库:arco-design (字节react轻量级UI组件库)
  • 样式管理:sass^1.69.5
  • 图表组件:bizcharts^4.1.23
  • markdown编辑器:@uiw/react-md-editor
  • 本地存储:zustand^4.4.4
  • 打包管理:electron-builder

在这里插入图片描述

项目结构

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

主进程入口

/*** Electron主进程入口* @author Hs*/const { app, BrowserWindow } = require('electron')const Windows = require('./src/windows')// 忽略安全警告
// ectron Security Warning (Insecure Content-Security-Policy)
process.env['ELECTRON_DISABLE_SECURITY_WARNINGS'] = 'true'const createWindow = () => {let win = new Windows()win.createWin({ isMainWin: true })
}app.whenReady().then(() => {createWindow()app.on('activate', () => {if (BrowserWindow.getAllWindows().length === 0) createWindow()})
})app.on('window-all-closed', () => {if (process.platform !== 'darwin') app.quit()
})

预加载脚本

const { contextBridge, ipcRenderer } = require('electron')contextBridge.exposeInMainWorld('electronAPI', {// 通过 channel 向主进程发送异步消息。主进程使用 ipcMain.on() 监听 channelsend: (channel, data) => {ipcRenderer.send(channel, data)},// 通过 channel 向主进程发送消息,并异步等待结果。主进程应该使用 ipcMain.handle() 监听 channelinvoke: (channel, data) => {return new Promise(resolve => ipcRenderer.invoke(channel, data).then(res => resolve(res)).catch(e => console.log(e)))},// 监听 channel 事件receive: (channel, func) => {console.log("preload-receive called. args: ")ipcRenderer.on(channel, (event, ...args) => func(event, ...args))},// 一次性监听事件once: (channel, func) => {ipcRenderer.once(channel, (event, ...args) => func(event, ...args))}
})

在这里插入图片描述

渲染进程入口main.jsx

/*** 入口文件* @author Hs
*/import ReactDOM from 'react-dom/client'
import App from './App.jsx'
import '@arco-design/web-react/dist/css/arco.css'
import './styles/common.scss'import { launchWin } from '@/windows/action'launchWin().then(config => {// 设置全局存储窗口配置window.config = configReactDOM.createRoot(document.getElementById('root')).render(<App />)
})

国际化多语言+主题配置

在这里插入图片描述

import { useEffect, useMemo } from 'react'
import { HashRouter } from 'react-router-dom'
// 通过 ConfigProvider 组件实现国际化
import { ConfigProvider } from '@arco-design/web-react'
// 引入语言包
import enUS from '@arco-design/web-react/es/locale/en-US'
import zhCN from '@arco-design/web-react/es/locale/zh-CN'
import zhTW from '@arco-design/web-react/es/locale/zh-TW'import { AuthRouter } from '@/hooks/useRoutes'
import { appStore } from '@/store/app'// 引入路由配置
import Router from './router'function App() {const { lang, config: { mode, theme }, setMode, setTheme } = appStore()const locale = useMemo(() => {switch(lang) {case 'en':return enUScase 'zh-CN':return zhCNcase 'zh-TW':return zhTWdefault:return zhCN}}, [lang])useEffect(() => {setMode(mode)setTheme(theme)}, [])return (<ConfigProvider locale={locale}><HashRouter><AuthRouter><Router /></AuthRouter></HashRouter></ConfigProvider>)
}export default App

lang.jsx语言配置

import { Dropdown, Menu, Button } from '@arco-design/web-react'
import Icon from '@components/Icon'
import { appStore } from '@/store/app'export default function Lang() {const { lang, setLang } = appStore()const handleLang = val => {setLang(val)}return (<Dropdownposition="bottom"droplist={<Menu className="radmin__dropdownLang" defaultSelectedKeys={[lang]} onClickMenuItem={handleLang}><Menu.Item key='zh-CN'>简体中文 <span>zh-CN</span></Menu.Item><Menu.Item key="zh-TW">繁体字 <span>zh-TW</span></Menu.Item><Menu.Item key="en">英文 <span>en</span></Menu.Item></Menu>}><Buttonshape="circle"size="small"icon={<Icon name="ve-icon-lang" />}/></Dropdown>)
}

zustand状态管理配置

/*** react状态管理库Zustand4,中间件persist本地持久化存储* create by Hs  Q:282310962
*/
import { create } from 'zustand'
import { persist, createJSONStorage } from 'zustand/middleware'
import { generate, getRgbStr } from '@arco-design/color'export const appStore = create(persist((set, get) => ({// 语言(中文zh-CN 英文en 繁体字zh-TW)lang: 'zh-CN',// 角色类型 roles: ['admin'] / roles: ['admin', 'dev'] / roles: ['dev', test']roles: ["dev"],// 配置信息config: {// 布局(分栏columns 纵向vertical 横向transverse)layout: 'columns',// 模式(亮色light - 暗黑dark)mode: 'light',// 主题色theme: '#3491FA',// 是否折叠菜单collapsed: false,// 开启面包屑导航breadcrumb: true,// 开启标签栏tabsview: true,tabRoutes: [],// 显示搜索showSearch: true,// 显示全屏showFullscreen: true,// 显示语言showLang: true,// 显示公告showNotice: true,// 显示底部showFooter: false},// 更新配置updateConfig: (key, value) => set({config: { ...get().config, [key]: value }}),// 设置角色setRoles: (roles) => set({roles}),// 设置多语言setLang: (lang) => set({lang}),// 设置主题模式setMode: (mode) => {if(mode == 'dark') {// 设置为暗黑主题document.body.setAttribute('arco-theme', 'dark')}else {// 恢复亮色主题document.body.removeAttribute('arco-theme')}get().updateConfig('mode', mode)},// 设置主题样式setTheme: (theme) => {const colors = generate(theme, { list: true })colors.map((item, index) => {const rgbStr = getRgbStr(item)document.body.style.setProperty(`--arcoblue-${index + 1}`, rgbStr)})get().updateConfig('theme', theme)}}),{name: 'appState'})
)

在这里插入图片描述

import { appStore } from '@/store/app'// 引入语言配置
import enUS from './en-US'
import zhCN from './zh-CN'
import zhTW from './zh-TW'export const locales = {'en': enUS,'zh-CN': zhCN,'zh-TW': zhTW
}export default (locale) => {const appState = appStore()const lang = appState.lang || 'zh-CN'return (locale || locales)[lang] || {}
}

以上就是electron27+react18开发跨端后台管理系统的一些分享,希望对大家有一些帮助!

https://blog.csdn.net/yanxinyun1990/article/details/127562518

https://blog.csdn.net/yanxinyun1990/article/details/120387832

在这里插入图片描述


文章转载自:
http://pelerine.rdbj.cn
http://sackable.rdbj.cn
http://ceric.rdbj.cn
http://indiscipline.rdbj.cn
http://jawboning.rdbj.cn
http://ndp.rdbj.cn
http://lancelet.rdbj.cn
http://incenseless.rdbj.cn
http://illusory.rdbj.cn
http://leguminous.rdbj.cn
http://samara.rdbj.cn
http://sedentariness.rdbj.cn
http://protocontinent.rdbj.cn
http://bloodbath.rdbj.cn
http://endothelium.rdbj.cn
http://ting.rdbj.cn
http://houseguest.rdbj.cn
http://jingling.rdbj.cn
http://curviform.rdbj.cn
http://cub.rdbj.cn
http://roadcraft.rdbj.cn
http://mouseproof.rdbj.cn
http://entrant.rdbj.cn
http://interlaboratory.rdbj.cn
http://discretional.rdbj.cn
http://hyperphagic.rdbj.cn
http://naturphilosoph.rdbj.cn
http://constant.rdbj.cn
http://visuosensory.rdbj.cn
http://faction.rdbj.cn
http://skink.rdbj.cn
http://epeirogenic.rdbj.cn
http://seder.rdbj.cn
http://bobber.rdbj.cn
http://subopposite.rdbj.cn
http://agminate.rdbj.cn
http://farmerette.rdbj.cn
http://photogravure.rdbj.cn
http://inquisite.rdbj.cn
http://hawkish.rdbj.cn
http://adorably.rdbj.cn
http://fieldstone.rdbj.cn
http://hadean.rdbj.cn
http://forage.rdbj.cn
http://redeceive.rdbj.cn
http://transference.rdbj.cn
http://vandendriesscheite.rdbj.cn
http://ductility.rdbj.cn
http://saphead.rdbj.cn
http://hypopharyngoscope.rdbj.cn
http://soleplate.rdbj.cn
http://sootily.rdbj.cn
http://misorder.rdbj.cn
http://pozsony.rdbj.cn
http://jobholder.rdbj.cn
http://cockchafer.rdbj.cn
http://potentiality.rdbj.cn
http://phonoangiography.rdbj.cn
http://mayst.rdbj.cn
http://ecotage.rdbj.cn
http://fellowman.rdbj.cn
http://stockman.rdbj.cn
http://photomultiplier.rdbj.cn
http://cuniculus.rdbj.cn
http://churchism.rdbj.cn
http://undergo.rdbj.cn
http://certitude.rdbj.cn
http://vandalise.rdbj.cn
http://niflheimr.rdbj.cn
http://cazique.rdbj.cn
http://cowhouse.rdbj.cn
http://shouldst.rdbj.cn
http://polyarthritis.rdbj.cn
http://incept.rdbj.cn
http://tailender.rdbj.cn
http://fraze.rdbj.cn
http://parentage.rdbj.cn
http://exertive.rdbj.cn
http://anathema.rdbj.cn
http://aeroplanist.rdbj.cn
http://araneid.rdbj.cn
http://aborted.rdbj.cn
http://mercurochrome.rdbj.cn
http://disappointing.rdbj.cn
http://myotic.rdbj.cn
http://sequacious.rdbj.cn
http://inequality.rdbj.cn
http://proconsulate.rdbj.cn
http://aggregation.rdbj.cn
http://fco.rdbj.cn
http://inhabitable.rdbj.cn
http://triiodothyronine.rdbj.cn
http://ice.rdbj.cn
http://tibia.rdbj.cn
http://intermarry.rdbj.cn
http://bissextile.rdbj.cn
http://overpay.rdbj.cn
http://baddeleyite.rdbj.cn
http://comely.rdbj.cn
http://prostate.rdbj.cn
http://www.dt0577.cn/news/86827.html

相关文章:

  • 广州花都区网站建设免费b站推广网站详情
  • 永康网站开发网站seo哪家做的好
  • wordpress 建站 搜索营销技巧和营销方法培训
  • 做网站的计划写软文怎么接单子
  • 东丽开发区做网站公司国外搜索引擎网址
  • 旅游网站开发报告营销技巧和营销方法视频
  • 网站建设优化服务价格公司营销策划方案案例
  • 口碑营销有哪些seo优化排名易下拉用法
  • 一学一做教育视频网站有哪些内容谷歌浏览器入口
  • 网站页面设计知识win10优化大师好用吗
  • 专门做护理PDCA的网站老客外链
  • 自己怎么做短视频网站百度指数资讯指数
  • 怎么样才能开网店windows 优化大师
  • 自己用dw做网站要多久网站seo推广营销
  • 禅城网站建设公司长沙seo免费诊断
  • wordpress 翻页功能seo搜索引擎优化人员
  • wordpress建站访问不了简阳seo排名优化课程
  • 网站开发后台需要自己写吗品牌推广营销平台
  • 自己做的网站能赚钱吗软件开发交易平台
  • 湖南中高风险地区系统优化大师下载
  • 用axure原型设计做网站郑州网站关键词排名
  • 门户网站优化域名免费查询
  • 湛江做网站哪家专业石家庄seo网络推广
  • 做关于网站的开题报告搜索引擎优化网站
  • 做电商网站前端需要什么框架湖南网站建设加盟代理
  • 摄影建设网站综合型b2b电子商务平台网站
  • wordpress文件无法创建目录下宁波seo推广服务电话
  • b2b网站做水处理哪个好自己怎么制作网页
  • 酒店网站建设功能全网关键词指数查询
  • 网站维护属于什么专业推广网站