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

一般网站建设费用预算99到家微网站什么做的

一般网站建设费用预算,99到家微网站什么做的,网站开发的收入,做盗版小说网站最近公司需要在管理后台加一个水印方案~ 项目用的umi方案,以为就是改一个配置的问题,后来发现坑点还蛮多~ 希望此稳定能帮助到用umi 的你们. 一. 先来说说心路历程 坑点1 umi的水印适配只能在layout中进行配置,也就是路由配置中layout为false的页面无法配置水印,比如说登录页…最近公司需要在管理后台加一个水印方案~ 项目用的umi方案,以为就是改一个配置的问题,后来发现坑点还蛮多~ 希望此稳定能帮助到用umi 的你们. 一. 先来说说心路历程 坑点1 umi的水印适配只能在layout中进行配置,也就是路由配置中layout为false的页面无法配置水印,比如说登录页~ 坑点2 就算只对layout配置也会有问题,如下是配置与效果 可以看到头部区域,菜单区域以及空白区域适配不到. 坑点3 既然配置不好处理,而umi用的是react的ant组件,那是不是可以用ant的水印组件Watermark去包裹根组件达到效果呢? 想法是好的. 实际情况是umi的app.tsx只是一个配置文件,它并没有暴露根组件,也就是说我们只能用原生js拿到根节点~ 但就算拿到根节点,你又如何去适配Watermark组件呢? 原生与jsx如何进行写法上的兼容? 坑点4 因为以上诸多不便,我不得不尝试寻找其它可替代方案. 比如去github上寻找原生相关的水印方案库~ 反复查找下锁定了一个start比较多的开源水印库:watermark-dom 这个库的优点是简单易用,对水印有保护策略的加持; 缺点是最新版本更新与2019年,对ts的兼容性不是很好,水印内容只能文本不能是图片,且适配不是很好,不能随着内容变化而变化,还会出现滚动条等问题~ 所以这个库我们只能作为备选方案… 心路总结 基于以上心路,最后决定还是回到坑点3,尝试手动适配 二. 核心解决思路 通过react18的createRoot,render出水印组件对应的dom通过MutationObserver监听dom的变化,并在异步回调中做处理拿到水印dom之后将其append到masteroot根节点之中存储水印文案判断是否变化.变化了的话重复1步骤render创建水印,删除旧的水印,append新的水印dom最后通过observer.disconnect()注销监听 三. 实现代码 如下是我的最终调试代码,在app.tsx文件中调用即可 import { Watermark } from antd; import { createRoot } from react-dom/client; let oldval: string ; const creatWatermark (content: string) {console.log(oldval, content);if (oldval oldval content) return;const opt {content: content,fontColor: red,fontStyle: normal,fontSize: 23,gapX: [30, 30],rotate: 10,};oldval content;// 选择需要观察变动的节点const targetNode document.createElement(div);// 解析AST挂载(是异步,所以后续需要监听节点变化再做处理)createRoot(targetNode).render(Watermark {...opt} /);// 观察器的配置需要观察什么变动, childList只能向下观察到一级, subtree可多级 const config { childList: true, subtree: true };// 当观察到变动时执行的回调函数const callback (mutationsList: MutationRecord[],observer: MutationObserver,) {for (let mutation of mutationsList) {if (mutation.type childList) {const rootMaster document.getElementById(root-master,) as HTMLElement;const newDom targetNode?.childNodes[0]?.childNodes[0] as HTMLElement;if (newDom) {document.getElementById(watermark)?.remove();newDom.id watermark;rootMaster.appendChild(newDom);observer.disconnect(); // 注销}}}};// 创建一个观察器实例并传入回调函数 MutationObserver的回调是微任务const observer new MutationObserver(callback);// 以上述配置开始观察目标节点observer.observe(targetNode, config);// 方案二: 用动画帧刷新也可以(弃用)// const getFormRefLoop () {// window.requestAnimationFrame(() {// const rootMaster document.getElementById(root-master) as HTMLElement;// const w root?.childNodes[0]?.childNodes[0] as HTMLElement;// if (rootMaster w) {// const old document.getElementById(root);// if (old) old.remove();// w.id root;// rootMaster.appendChild(w);// } else {// getFormRefLoop();// }// });// };// getFormRefLoop(); };export default creatWatermark; 小结 demo地址 原创不易,转载请注明来源. 如果对你有帮助,收藏关注加点赞哦 当然如果大家有更好的解决方案,欢迎评论哦
http://www.hkea.cn/news/14264814/

相关文章:

  • 网站设计设计目的阿里企业邮箱电话
  • 泗洪县建设局网站公司商标注册怎么弄
  • 有什么做心理咨询的好网站网站设计师主要做什么
  • 青岛关键词网站排名一个工程项目的整个流程
  • 做网站维护挣钱吗西安企业建站机构那里有
  • 网站搜索引擎怎样做什么软件可以做图片设计
  • 楼盘网站模板wordpress 文章阅读数
  • 大竹县国示建设专题网站小程序开发问题
  • 西安地区专业做网站公司北京公交yy优化
  • 广州手机端网站制作wordpress 怎么重新安装
  • 公司网站模版 dedecms营销网站建设内容
  • 工作时做网站使用软件怎么做自助购物网站
  • 专业做民宿的网站网深圳网站优化
  • 北理工网站开发与应用答案哈尔滨建筑专业网站
  • 做app模板网站东莞保安公司有多少家
  • 网站平台开发公司网站建设下一步打算
  • 个人网站 前置审批电脑网页怎么下载视频
  • 做网站app要多少钱北京网站建设团队
  • 千里马招标网站河北建设工程信息网辅助评标系统
  • 网站设计的内容温州建网站哪家好
  • 最新网站备案教程怎么建设影视卡网站
  • 姜堰网站制作建筑设计软件公司
  • 如何做网站哪个站推广济宁网站建设 帮站
  • 南宁网站怎么制作公司做使用的网站有哪些
  • 团购网站APP怎么做百度网站如何做运营
  • 网站模板 安装淘宝客必须做网站
  • 网站备案号被收回做venn的网站
  • 宝安做棋牌网站建设有哪些公司涿州网站网站建设
  • 常州平台网站建设免费观看行情软件网站下载
  • 手机网站主页东城区网站建设公司