JavaScript
方方|灿歌
毕业于清华大学,拥有超过13年的工作经验。 Oracle认证 讲师,拥有6年以上授课经验。精通Oracle数据库、中间 (Weblogic)和大数据Hadoop的管理和开发。 曾为湖北 移动,中国移动,山东教育网进行培训。著有畅销书《IT 必学课》,曾获得xx奖项。
展开
-
React18报错警告:You are calling ReactDOMClient.createRoot() on a container that has already been passed
React18报错警告:You are calling ReactDOMClient.createRoot() on a container that has already been passed to createRoot() before. 解决办法。原创 2023-05-09 21:21:30 · 2037 阅读 · 1 评论 -
为什么想到微前端,是巨石应用?
现代复杂的web app或者网站,通常由很多相对独立的功能模块组合而成,而对这些模块负责的应该是相互独立的多个团队。这些独立的团队由于专业分工不同,会负责着特定的业务领域,以及完成特定的开发任务。这样的团队,通常在人员组成方面囊括了从前端开发到服务端开发,从UI实现到数据库设计这样端到端的跨职能人员构成。微前端是一种类似于微服务的架构,是一种由独立交付的多个前端应用组成整体的架构风格,将前端应用分解成一些更小、更简单的能够独立开发、测试、部署的应用,而在用户看来仍然是内聚的单个产品。原创 2023-03-07 12:16:17 · 712 阅读 · 0 评论 -
一个正则表达式模式使用括号,将导致相应的子匹配被记住——理解正则,精通replace
一个正则表达式模式使用括号,将导致相应的子匹配被记住。下面的脚本使用 replace() 方法来转换字符串中的单词。在匹配到的替换文本中,脚本使用替代的$ 1,$ 2 表示第一个和第二个括号的子字符串匹配。使用括号匹配的子字符串的数量是无限的。返回的数组中保存所有被发现的子匹配。下面的例子说明了如何使用括号的子字符串匹配。(匹配模板字符)是正则,正则所匹配的内容会被第二个参数的返回值替换掉,简单来讲替换所有的匹配项。,替换值可以是一个字符串或者一个每次匹配都要调用的回调函数。)匹配项后的新字符串。原创 2023-02-24 12:07:18 · 193 阅读 · 0 评论 -
报`Uncaught (in promise)`错误解决办法
使用了promise,但是在使用的过程中报错误,第一次遇到这种错误,所以在此记录下,方便以后解决问题只要在 new Promise 后面加上,就不会报错了。原创 2022-09-26 15:22:42 · 57979 阅读 · 0 评论 -
使用JS(TS)判断页面在 微信 / 微博 / QQ / 支付宝 各APP平台内置浏览器
使用JS(TS)判断页面在 微信 / 微博 / QQ / 支付宝 各APP平台内置浏览器原创 2022-12-29 11:43:08 · 2222 阅读 · 0 评论 -
Git多用户,不同项目配置不同Git账号
但是,这不适用于 Azure DevOps,因为与 SSH 协议相关的技术原因以及 Git SSH URL 的结构。Azure DevOps 会盲目接受客户端在身份验证期间提供的第一个密钥。通常,如果为 SSH 客户端配置多个密钥并连接到 SSH 服务器,则客户端可以一次尝试一个密钥,直到服务器接受一个密钥。对于 Azure DevOps,需要将 SSH 配置为显式使用特定的密钥文件。b. 一个 github,用于自己进行一些开发活动;a. 一个 gitee,用于公司内部的工作开发;原创 2022-11-08 22:12:56 · 627 阅读 · 0 评论 -
使用Antd4.x 的表单组件-From-From.List实践
在 4.20版本前 我的做法是通过 hooks -useReducer 强制更新视图。联动, 可以使用 Form.useWatch hooks 监听;PS: 如果其他组件使用了 form的数据,例如上面的 组件。数据是可以回填回显的,form默认双向绑定。在 4.20之后才有的hooks。实践(踩坑,避坑指南~~)使用Antd4.x 的。原创 2022-08-24 16:24:45 · 1208 阅读 · 0 评论 -
前端从零开发定位系统
功能演示:标签定位效果动图:功能需求基站定位基站属性设置基站布局基站角色设置(主、次、 从 )基站分组基站关联关系动态计算基站物理距离标签标签定位轨迹多种算法的标签和轨迹绘制标签显隐轨迹显隐平面图上传校准比例尺校准原点技术点:React [hooks]Konvajscanvasweb worker其他技术问题点鼠标框选,基站高亮动态绘制多边形判断多边形是否有基站网格性能不同楼层的基站是否在线,自动刷新websocket高频刷新前端多线程w原创 2022-01-27 17:53:34 · 280 阅读 · 0 评论 -
javascript(JS)获得电脑、手机屏幕的DPI
javascript(JS)获得电脑、手机屏幕的DPI原创 2022-01-05 10:52:46 · 3465 阅读 · 0 评论 -
konva中当尝试导出画布图片时遇到跨越问题?
当尝试导出konva画布图片时遇到跨越问题?Unable to get data URL. Failed to execute ‘toDataURL’ on ‘HTMLCanvasElement’: Tainted canvases may not be exported.Unable to get image data from canvas because the canvas has been tainted by cross-origin data.Or when you apply原创 2021-11-19 09:33:47 · 844 阅读 · 0 评论 -
konvaJs--数据序列化
如何导出画布到JSON?使用Konva将舞台保存为JSON字符串,可以使用toJSON()方法将Konva节点树序列化为可保存的文本在网络存储或离线数据库中。我们也可以序列化其他节点,包括层、组和形状。toJSON()方法不能保存过滤器、图像和事件监听器。所以它适用于非常小的应用程序。对于更复杂的情况,请阅读最佳实践将整个舞台转换为json 和转换为对象转换都是按照 “”树“”结构的let stageJson = stage.toJSON()// {"attrs":{"width":1原创 2021-09-29 11:31:26 · 626 阅读 · 1 评论 -
konvajs-性能优化-使用缓存
大幅提高复杂Konva图形绘制性能的一种方法是将它们缓存为图像。这可以通过使用cache()方法将节点转换为图像对象来实现。本教程将绘制10个缓存的星星,而不是单独绘制10个Stars的绘图性能提升了4倍。缓存可以应用于任何节点,包括舞台、层、组和形状。注意:cache()方法要求图像托管在与执行它的代码具有相同域的web服务器上。在同样的情况下,cache()函数不能自动检测节点的大小。所以你应该小心阴影和笔画的组和形状。如果你看到意外的结果,将带有x, y,宽度和高度属性的绑定属性传递给翻译 2021-09-28 20:57:58 · 1388 阅读 · 0 评论 -
前端(JS)windows命令行生成树目录结构和结构图
前端(JS)windows命令行生成树目录结构和结构图首先进入到工程的目录在目录中打开命令行CMD按住shift键,右击你要生成目录的文件夹data,选择“在此处打开命令窗口”。(或者win+R,输入cmd打开命令窗口后通过cd命令进入你要生成目录的文件夹路径下)或者直接在文件夹管理器中输入 CMD命令:tree 只生成文件夹树形结构图命令:tree /f 生成包含文件的详情树形结构图命令:tree > tree.txt 生成并保存树形结构图文件最后福利介绍个开源的工具原创 2021-09-23 17:13:28 · 1177 阅读 · 0 评论 -
一个奇怪的时间格式:2020-01-02T160000.000Z
一个奇怪的时间格式:2020-01-02T16:00:00.000ZUTC:时间标准时间,世界标准时间 ✅GMT:格林尼治时间GST:北京时间那么下面我们就来简单介绍一下关于时间的一些基本知识:首先是UTC:时间标准时间协调世界时(英:Coordinated Universal Time ,法:Temps Universel Coordonné),又称世界统一时间,世界标准时间,国际协调时间。英文(CUT)和法文(TUC)的缩写不同,作为妥协,简称UTC。然后是GMT:格林尼治原创 2020-07-29 14:09:02 · 1855 阅读 · 0 评论 -
每天学点JS--ES6(ECMAScript5)
每天学点JavaScript–ES6(ECMAScript5)@扩展运算符数组的扩展含义:扩展运算符(spread)是三个点(...)。它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列。也可通俗的理解为 “脱壳”console.log(...[1, 2, 3])// 1 2 3console.log(1, ...[2, 3, 4], 5)// 1 2 3 4 5[...document.querySelectorAll('div')]// [<div>原创 2020-07-14 16:36:42 · 95 阅读 · 0 评论 -
git 怎么删除本地分支和远程分支
git 删除分支 。原创 2020-07-06 18:04:54 · 295 阅读 · 0 评论 -
函数声明和函数表达式,什么 鬼?
函数表达式 函数表达式的特征 使用函数实现递归 使用闭包定义私有变量数表达式是 JavaScript 中的一个既强大又容易令人困惑的特性。第 5 章曾介绍过,定义函数的方式有两种:一种是函数声明,另一种就是函数表达式。函数声明的语法是这样的:function functionName(arg0, arg1, arg2) {//函数体}首先是 function 关键字,然后是函数的名字,这就是指定函数名的方式。Firefox、Safari、Chrome和 Opera都给函数定义原创 2020-07-01 14:18:27 · 117 阅读 · 0 评论 -
一文读懂 JS 装饰器,这是一个会打扮的装饰器(俗话说,人靠衣装,佛靠金装。)
俗话说,人靠衣装,佛靠金装。大街上的小姐姐都喜欢把自己打扮得美美的,让你忍不住多看几眼,这就是装饰的作用。1. 前言装饰器是最新的 ECMA 中的一个提案,是一种与类(class)相关的语法,用来注释或修改类和类方法。装饰器在 Python 和 Java 等语言中也被大量使用。装饰器是实现 AOP(面向切面)编程的一种重要方式。下面是一个使用装饰器的简单例子,这个 @readonly 可以将 count 属性设置为只读。可以看出来,装饰器大大提高了代码的简洁性和可读性。class Person {原创 2020-06-24 14:44:54 · 217 阅读 · 0 评论 -
javaScript事件的三个阶段:捕获阶段 目标阶段 冒泡阶段
javaScript事件的三个阶段:捕获阶段 目标阶段 冒泡阶段捕获阶段 概念:事件从根节点流向目标节点,途中流经各个DOM节点,在各个节点上触发捕获事件,直到达到目标节点。目标阶段 概念:事件到达目标节点时,就到了目标阶段,事件在目标节点上被触发冒泡阶段 概念:事件在目标节点上触发后,不会终止,一层层向上冒,回溯到根节点addEventListenerattachEvent (IE 特有) 的第三个参数的作用,通过查文档可以知,addEventListener的第三个参数是一个布尔类型 1原创 2020-06-17 10:19:32 · 1014 阅读 · 0 评论