js拖拽框选插件
只要你具备了精神气质的美,只要你有这样的自信,你就会拥有风度的自然之美。——金马 分享一个js的拖拽框选插件 官网:https://dragselect.com/ 源码:https://github.com/ThibaultJanBeyer/DragSelect.git 使用: 1pnpm i dragselect 有前端大佬翻译了部分,并编写了一个html的demo https://gitee.com/ovsexia/DragSelect-Doc-Cn 我在使用过程中发现反选有点问题,所以如果是跟我一样pnpm i下载下的版本,应该也会有这个问题,因此反选自己实现即可,这是我按照上面链接中的demo在vue模块化项目中的组件: TagDragSelect.vue 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828...
在vue中使用jsx
一个人追求的目标越高,他的才能就发展得越快,对社会就越有益,我确信这也是一个真理。——玛克西姆·高尔基 首先是官方文档 vue2的:https://cn.vuejs.org/v2/guide/render-function.html#JSX vue3的:https://v3.cn.vuejs.org/guide/render-function.html#jsx 我们这里以vue2举例: 先使用render函数写一个最简单的jsx组件 12345678910<script>export default { render() { return <div>Hello World</div> }}</script><style></style> 注意此处不能有template标签,其他的该咋用就咋用 还有的区别在这个链接里:https://github.com/vuejs/jsx#installation 如果有react的基础,上手这个就很容易...
react在ts中提示ref问题
不要太在乎一些人,越在乎,越卑微。——周国平 首先按照官方文档的demo写好代码,却报错如下: 安装插件Error Lens后: 如何解决? 前往Text的ref源码,可以看到是需要一个叫LegacyRef的类型 我们进LegacyRef,看到其就是Ref或string的类型 因此这里我们定义为Ref类型即可 这里出现了新的问题,不能将MutableRefObject<Text | null |undefined>分配给Ref<Text> 我们进入useRef源码,看到其包含几个重载 分别查看MuteableRefObject和RefObject 可以看到RefObject是Ref中容许的其中一种类型 所以应该使用上面一种重载 在原有代码React.useRef()中传入null 报错解决 同理,trRef一样 注意此处Ref<TextRef>内的泛型使用的是konva/lib/shapes/Text包下的Text,改名为TextRef 除了在定义变量左侧申明类型,在方法右侧也可以申明泛型,让编辑器自动推测
konva-react
“善良一点,因为大家的一生都不容易。”——《奇迹男孩》。 官方文档:https://konvajs.org/docs/react/ 中文文档:http://konvajs-doc.bluehymn.com/docs/react/ 安装: 1pnpm install react-konva konva --save 在konva中能做到的,在konva-react也一样能做到,只不过是换了一种写法罢了 这里有个使用konva-react的在线编辑器Demo https://konvajs.org/docs/sandbox/Canvas_Editor.html 是基于一个叫Polotno的框架,它提供了多种react对konva的封装,能开箱即用 https://polotno.dev/ 但其不可以免费用于商业用途 https://codesandbox.io/embed/github/polotno-project/polotno-site/tree/source/examples/polotno-demo?fontsize=11&hidenavigation=1&a...
在线idea
远方除了遥远一无所有。——海子《远方》 分享一个在线idea地址: https://ide.aliyun.com/ 界面是这样的: 甚至能debug 能装插件 非常方便
项目部署到6666端口访问不了
通向面包的小路蜿蜒于劳动的沼泽之中,通向衣裳的小路从一块无花的土地中穿过,无论是通向面包的路还是通向衣裳的路,都是一段艰辛的历程。——福斯 这个问题是由于chrome禁用了部分端口: https://chromium.googlesource.com/chromium/src.git/+/refs/heads/master/net/base/port_util.cc 这里的: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586// The general list of blocked ports. Will be blocked unless a specific// protocol overrides it. (Ex: ftp can use port 21)// When adding a por...
bean-searcher整合mybatis-plus逻辑删除
人死像熟透的梨,离树而落,梨者,离也。——《活着》 需要用到参数过滤器: https://bs.zhxu.cn/guide/latest/advance.html#%E5%8F%82%E6%95%B0%E8%BF%87%E6%BB%A4%E5%99%A8 123456789101112131415161718192021@Beanpublic ParamFilter logicDeleteFilter() { return new ParamFilter() { @Override public <T> Map<String, Object> doFilter(BeanMeta<T> beanMeta, Map<String, Object> paraMap) { // beanMeta 是正在检索的实体类的元信息, paraMap 是当前的检索参数 // 返回过滤后的检索参数 TableInfo t...
部署boot项目sh脚本
只有流过血的手指,才能弹出世间的绝唱。——泰戈尔 分享一个部署boot项目的sh脚本 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273#环境变量source /etc/profile#!/bin/sh#jdkJAVA_HOME=/此处换成真实jdk路径export PATH=$PATH:$JAVA_HOME/binexport BUILD_ID=dontkillme#定义程序名 及jar包的名PROJECT_NAME=此处换成真实jar名称.jarLOG_NAME=日志名.log## 编写判断程序是否正在运行的方法isExist() { ## 首先查找进程号 pid=$(ps -ef | grep ${PROJECT_NAME} | grep -v "grep" | awk '{p...
browserify
很奇怪,我们不屑与他人为伍,却害怕自己与众不同。——保罗·科埃略的《韦罗妮卡决定去死》 今天又来分享个好东西:https://browserify.org/ 这个玩意儿可以帮我们把npm下载的依赖,使用script标签引入: 先安装: 1pnpm install -g browserify 比如我们引入一个outils 1pnpm i outils 然后编写一个main.js 12345const outils = require('模块名')window.模块名 = 模块名// 例如const outils = require('outils')window.outils = outils 生成 123browserify main.js -o [文件名]# 例如browserify main.js -o bundle.js 然后我们引入这个js试试 1<script src="bundle.js"></script> 运行一下,可以看到我们能在控制台拿到,说明引入成功 有朋...
exists
发上开出了蔷薇,袖底是风,足下是莲。——顾城 我们可以使用exists代替in查询: 阿里编码规约第五条第(三)条第9条: 【推荐】in操作能避免则避免,若实在避免不了,需要仔细评估in后边的集合元素数量,控制在1000个之内。 我们可以在子元素多的情况下,使用exists查询 比如下面这个in查询 123456789101112SELECT * FROM sys_user AS a WHERE id in ( SELECT user_id FROM sys_user_role AS b WHERE b.role_id IN ( SELECT id FROM sys_role AS c WHERE b.role_id = c.id AND c.role_code LIKE '%o%' )); 可以改为: 12345678910111213SELECT * FROM sys_user AS a WHERE EXISTS ( SELECT user_id FROM sys_user_role AS b WHERE a.id = b.us...
