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

学做网站 软件wordpress单号管理

学做网站 软件,wordpress单号管理,写作教学网站,建设网站后期人员薪酬文章目录 引入思路抽出公共声明文件抽出全局通用数据类型和方法主进程模块1.抽离基础常量2.封装窗口工具类 渲染进程模块测试结果 引入 demo项目地址 可以看到我们之前在主进程中的逻辑全部都塞到index.ts文件中#xff0c;包括窗口的一些事件处理#xff0c;handle监听包括窗口的一些事件处理handle监听协议注册等等后期维护起来会比较麻烦我们不妨将其中的功能细分封装到工具类中。 思路 以新建窗口举例流程为 主进程ipcMain.handle监听根据传来的参数构建新窗口 /*** 新建一个窗口* route路由地址 paramJsonStr 序列化后的参数对象*/ ipcMain.handle(open-win, (_, route: string, paramJsonStr: string) {...})渲染进程调用 ipcRenderer.invoke方法通知主进程创建窗口 /*** 新建一个窗口* param path 路由地址* param param 传递的参数*/ export function openWindow(path: string, param?: Object) {...ipcRenderer.invoke(open-win, path, paramJsonStr); }可以预见的是后续窗口的创建逻辑会随着业务逻辑而扩展例如创建窗口时 指定窗口宽高标题背景色等属性设置窗口透明事件击穿等等内容并且多个窗口间的一些交互需要我们去维护一个窗口组信息记录窗口的id和逻辑上的关联关系等。 所以我们不妨创建一个窗口工具类专门集成封装窗口相关的方法属性等 抽出公共声明文件 我们在渲染进程项目模块中的electronUtils和主进程中的窗口工具类中的【handle/on】方法是一一对应的【invoke/send】传入的参数也是通用的所以我们不妨抽出一个公共的全局声明文件用于声明通用的一些参数对象。 1.在全局声明文件中添加通用事件对象的声明 types\global.d.ts /** 一些全局的对象补充声明 */ export {}; declare global {...// 窗口创建参数规范interface IWindowConfig {key?: string; // 窗口唯一key不传则取窗口的id假如已存在该key则聚焦该窗口route?: string; // 窗口路由width?: number; // 窗口宽度height?: number; // 窗口高度param?: string; // 传递参数新窗口打开时能直接从路由中获取拼接url传递推荐只传小数据} }2.主进程引入全局声明文件 electron\electron-env.d.ts /// reference typesvite-plugin-electron/electron-env /import ../types/global.d.ts;抽出全局通用数据类型和方法 主进程和渲染进程都会调用相同的事件名称所以我们不妨定义一个全局的事件枚举类方便两个进程的代码书写和规范【事件名称应当唯一否则会重复绑定】。 1.在根目录下创建globel目录然后分别创建channelEvent.ts和channelEvent.d.ts两个文件 【事件管道枚举和对应的声明文件】 globel\channelEvent.ts /*** 自定义事件枚举*/ export enum CustomChannel {window_create custom_window_create, // 窗口新建事件window_move_on custom_window_move_on, // 开启窗口移动事件window_position_change custom_window_position_change, // 修改窗口的位置 }globel\channelEvent.d.ts // customEvents.d.ts/*** 自定义事件枚举的类型声明*/ export declare enum CustomChannel {window_create custom_window_create, // 窗口新建事件window_move_on custom_window_move_on, // 开启窗口移动事件window_position_change custom_window_position_change, // 修改窗口的位置 }2.在根目录下的tsconfig.node.json文件中添加引入 tsconfig.node.json include: [...,globel]3.配置别名快速访问 vite.config.ts ... resolve: {alias: {...globel: path.resolve(__dirname, ./globel),},},tsconfig.json {compilerOptions: {...paths: {...globel/*: [globel/*],},types: [vite-plugin-svg-icons/client]},}主进程模块 1.抽离基础常量 我们将主进程中常用的常量抽离到单独的文件中 electron\main\common\variables.ts import { join } from node:path;/***公共变量配置*/ process.env.DIST_ELECTRON join(__dirname, ..); process.env.DIST join(process.env.DIST_ELECTRON, ../dist); process.env.PUBLIC process.env.VITE_DEV_SERVER_URL? join(process.env.DIST_ELECTRON, ../public): process.env.DIST;// 公共变量中存一份SRC的路径方便取值 process.env.SRC_PATH join(__dirname, ../../src).split(\\).join(/);// 预加载文件路径 export const preloadPath join(__dirname, ../preload/index.js); // dev环境请求地址 export const url process.env.VITE_DEV_SERVER_URL; // 部署环境的html文件路径 export const indexHtmlPath join(process.env.DIST, index.html); // icon图标地址 export const iconPath join(process.env.PUBLIC, icons/icon.ico); // app的title会被index.html中配置的title%VITE_APP_TITLE%/title 覆盖 export const appTitle 新窗口; // app在windows上注册表的协议 export const PROTOCOL bcxlelectrondemo;2.封装窗口工具类 注意 1.定义默认窗口参数时使用了ts中的联合类型这样定义的defaultWindowConfig就必须拥有指定的两个类型中的所有属性 2.创建了一个窗口类并将窗口相关的逻辑封装为窗口类中的成员方法 3.窗口类中定义个一个listen方法里面放置所有需要与渲染进程交互的handle监听 electron\main\windowUtils.ts import {BrowserWindow,BrowserWindowConstructorOptions,ipcMain, } from electron; import {url,appTitle,preloadPath,iconPath,indexHtmlPath, } from ./common/variables; import { CustomChannel } from ../../globel/channelEvent;/* 定义一些窗口工具类中会使用到的常量以及窗口顶级父类 */// 默认窗口参数 export const defaultWindowConfig: BrowserWindowConstructorOptions IWindowConfig {title: appTitle,icon: iconPath,width: 800,height: 600,webPreferences: {webviewTag: true,preload: preloadPath,nodeIntegration: true,contextIsolation: false,}, };/*** 窗口工具类*/ export class WindowUtils {// 事件监听处理listen() {// 窗口创建监听ipcMain.handle(CustomChannel.window_create, (_, opt: IWindowConfig) {this.createWindows(opt);});}/*** 创建窗口* param windowConfig 窗口创建参数*/createWindows(windowConfig: IWindowConfig): BrowserWindow {// 创建窗口对象const win new BrowserWindow(Object.assign({}, defaultWindowConfig, windowConfig));// 根据当前环境加载页面并传递参数const param windowConfig.param? ?urlParamData windowConfig.param: ;if (process.env.VITE_DEV_SERVER_URL) {// 如果是开发环境则直接访问本地跑起的服务拼接对应的路由win.loadURL(${url}#${windowConfig.route}${param});} else {// 如果是线上环境则加载html文件的路径然后拼接路由win.loadFile(indexHtmlPath, { hash: windowConfig.route param });}// 绑定通用窗口事件return win;} } 接着我们调整index.ts中的创建主窗口的代码 import {WindowUtils} from ./windowUtils// 创建窗口工具类 const windowUtils new WindowUtils(); windowUtils.listen();... async function createWindow() {...win windowUtils.createWindows({route:/}); } 对比之前代码简练了不少 渲染进程模块 1.我们调整通用交互工具类补充新的窗口创建方法 src\utils\electronUtils.ts import { ipcRenderer } from electron; import { CustomChannel } from globel/channelEvent; /*** 新建一个窗口* param windowConfig*/ export function createWindow(windowConfig: IWindowConfig) {ipcRenderer.invoke(CustomChannel.window_create, windowConfig); }2.调整demo代码 src\components\demo\Index.vue electronUtils.createWindow({route: windowPath.value,param: JSON.stringify({message: 向你问个好~~,}),});测试结果 能够正常的创建窗口
文章转载自:
http://www.morning.pbknh.cn.gov.cn.pbknh.cn
http://www.morning.fgwzl.cn.gov.cn.fgwzl.cn
http://www.morning.fjshyc.com.gov.cn.fjshyc.com
http://www.morning.qsmmq.cn.gov.cn.qsmmq.cn
http://www.morning.nfyc.cn.gov.cn.nfyc.cn
http://www.morning.htrzp.cn.gov.cn.htrzp.cn
http://www.morning.sjwzz.cn.gov.cn.sjwzz.cn
http://www.morning.lgznf.cn.gov.cn.lgznf.cn
http://www.morning.ddzqx.cn.gov.cn.ddzqx.cn
http://www.morning.ktlxk.cn.gov.cn.ktlxk.cn
http://www.morning.kdgcx.cn.gov.cn.kdgcx.cn
http://www.morning.bxbnf.cn.gov.cn.bxbnf.cn
http://www.morning.lqgtx.cn.gov.cn.lqgtx.cn
http://www.morning.xyrw.cn.gov.cn.xyrw.cn
http://www.morning.rkdnm.cn.gov.cn.rkdnm.cn
http://www.morning.rhpy.cn.gov.cn.rhpy.cn
http://www.morning.klwxh.cn.gov.cn.klwxh.cn
http://www.morning.kjtdy.cn.gov.cn.kjtdy.cn
http://www.morning.ltywr.cn.gov.cn.ltywr.cn
http://www.morning.qjdqj.cn.gov.cn.qjdqj.cn
http://www.morning.nqwkn.cn.gov.cn.nqwkn.cn
http://www.morning.tpqzs.cn.gov.cn.tpqzs.cn
http://www.morning.msbmp.cn.gov.cn.msbmp.cn
http://www.morning.ghxsn.cn.gov.cn.ghxsn.cn
http://www.morning.cfrz.cn.gov.cn.cfrz.cn
http://www.morning.kgjyy.cn.gov.cn.kgjyy.cn
http://www.morning.nbnq.cn.gov.cn.nbnq.cn
http://www.morning.bdzps.cn.gov.cn.bdzps.cn
http://www.morning.mkrjf.cn.gov.cn.mkrjf.cn
http://www.morning.qfnrx.cn.gov.cn.qfnrx.cn
http://www.morning.hkpn.cn.gov.cn.hkpn.cn
http://www.morning.xhlht.cn.gov.cn.xhlht.cn
http://www.morning.xpmhs.cn.gov.cn.xpmhs.cn
http://www.morning.dqkcn.cn.gov.cn.dqkcn.cn
http://www.morning.nchlk.cn.gov.cn.nchlk.cn
http://www.morning.bqppr.cn.gov.cn.bqppr.cn
http://www.morning.xdpjf.cn.gov.cn.xdpjf.cn
http://www.morning.blbys.cn.gov.cn.blbys.cn
http://www.morning.lizpw.com.gov.cn.lizpw.com
http://www.morning.mhnxs.cn.gov.cn.mhnxs.cn
http://www.morning.xbyyd.cn.gov.cn.xbyyd.cn
http://www.morning.lekbiao.com.gov.cn.lekbiao.com
http://www.morning.mtgnd.cn.gov.cn.mtgnd.cn
http://www.morning.vehna.com.gov.cn.vehna.com
http://www.morning.rbjth.cn.gov.cn.rbjth.cn
http://www.morning.sfwd.cn.gov.cn.sfwd.cn
http://www.morning.hrqfl.cn.gov.cn.hrqfl.cn
http://www.morning.dcdhj.cn.gov.cn.dcdhj.cn
http://www.morning.wtdyq.cn.gov.cn.wtdyq.cn
http://www.morning.zhffz.cn.gov.cn.zhffz.cn
http://www.morning.pqypt.cn.gov.cn.pqypt.cn
http://www.morning.zmtrk.cn.gov.cn.zmtrk.cn
http://www.morning.yzzfl.cn.gov.cn.yzzfl.cn
http://www.morning.bsrqy.cn.gov.cn.bsrqy.cn
http://www.morning.bhrkx.cn.gov.cn.bhrkx.cn
http://www.morning.mkpkz.cn.gov.cn.mkpkz.cn
http://www.morning.zhengdaotang.cn.gov.cn.zhengdaotang.cn
http://www.morning.jcrlx.cn.gov.cn.jcrlx.cn
http://www.morning.yqgbw.cn.gov.cn.yqgbw.cn
http://www.morning.nbqwt.cn.gov.cn.nbqwt.cn
http://www.morning.sjzsjsm.com.gov.cn.sjzsjsm.com
http://www.morning.fkmqg.cn.gov.cn.fkmqg.cn
http://www.morning.sfqtf.cn.gov.cn.sfqtf.cn
http://www.morning.yhjlg.cn.gov.cn.yhjlg.cn
http://www.morning.jrhmh.cn.gov.cn.jrhmh.cn
http://www.morning.pabxcp.com.gov.cn.pabxcp.com
http://www.morning.xfjwm.cn.gov.cn.xfjwm.cn
http://www.morning.tjkth.cn.gov.cn.tjkth.cn
http://www.morning.jljwk.cn.gov.cn.jljwk.cn
http://www.morning.psdbf.cn.gov.cn.psdbf.cn
http://www.morning.bxyzr.cn.gov.cn.bxyzr.cn
http://www.morning.qwpdl.cn.gov.cn.qwpdl.cn
http://www.morning.hmktd.cn.gov.cn.hmktd.cn
http://www.morning.tzcr.cn.gov.cn.tzcr.cn
http://www.morning.bgbnc.cn.gov.cn.bgbnc.cn
http://www.morning.fbbpj.cn.gov.cn.fbbpj.cn
http://www.morning.qyhcm.cn.gov.cn.qyhcm.cn
http://www.morning.nmfml.cn.gov.cn.nmfml.cn
http://www.morning.lbqt.cn.gov.cn.lbqt.cn
http://www.morning.rybr.cn.gov.cn.rybr.cn
http://www.tj-hxxt.cn/news/258630.html

相关文章:

  • 卷帘门怎么做网站狂人站群系统
  • 做网站营业范围大学网站建设评比考核办法
  • windowxp做网站服务器东莞网络营销十年乐云seo
  • 做字典网站开发全屋定制十大名牌欧派
  • php网站开发试题在线制作免费生成水印
  • 自己建网站卖东西怎么样湛江cms模板建站
  • 蒙特网站建设公司wordpress gallery插件
  • 模板网站演示站点怎么做聊城专业网站设计公司
  • 网站建设的评分细则三维家
  • 如何注册免费网站客户软件管理系统
  • 如何在自己网站上做支付宝建设网上银行app下载安装
  • 塘沽建设网站西安高校网站建设
  • 做植物网站教育培训机构前十名
  • php做视频直播网站泊头做网站找哪家好
  • 怎么做竞拍网站网站建设基本流程
  • 哪里有网站开发服务器怎么注册商标品牌
  • 万链网站做的怎么样?移动互联网是以手机等什么设备为终端用无线技术实现相互通信
  • 门户网站建设困难商业网点建设开发中心网站
  • 湘潭做网站 都来磐石网络做网站用什么字体比较好
  • 企业营销型网站设计丹阳网站建设咨询
  • 网站建设销售找客源企业信息化管理软件有哪些
  • 临桂建设局网站做网上竞彩网站合法吗
  • 淮南网站建设好的公司官方网站建设方案图
  • 济南高端网站设计百度网页浏览器
  • 考百度指数 某个关键词在某个行业网站上的桂林八景
  • 网站建设app开发合同范本网页版ps在线使用
  • 上海市网站建设电话号码百度搜索关键词优化
  • 免费做网站用什么软件怎么做一网站首页
  • 网站文字模板设计公司logo免费设计生成器
  • 做民宿加盟哪些网站比较好海澜之家的网站建设目标