nvue坑
人之所以走入迷途,并不是由于他的无知,而是由于他自以为知。——卢梭 《爱弥儿》 前两天用nvue踩了不少坑,例如之前写的nvue引入图标坑就是一个 例如manifest.json中这里需要配置为weex才能使用weex渲染 uniapp-nvue文档 weex文档 要注意这里 基本上是nvue的一些常见的坑 还有其他的一些,例如一些不支持的css写法如transition 如果写成transition: 1s;则会提示 当然transition: all 1s;也不行 只能针对对应的过渡去写: 12transition-property: width;transition-duration: 1s; 缩写就是: 1transition: width 1s linear 2s; 一般像不支持的全局属性,需要写在条件编译里 12345678910.logo { height: 0; width: 0; /* #ifndef APP-PLUS-NVUE */ transition: all 1s; /* #endif */ /* #ifdef APP-PLUS...
lombok注解
秣秩斯干,幽幽南山。如竹苞矣,如松茂矣。——《诗经》 首先是官方文档,列举了所有注解 常用的我就不聊了,这里上代码聊聊不咋常用的 首先是@Cleanup注解,能够自动关闭流 12345678910111213public static String readFile(File file) throws Exception { StringBuilder builder = new StringBuilder(); @Cleanup InputStream is = new FileInputStream(file); String line; @Cleanup BufferedReader reader = new BufferedReader(new InputStreamReader(is)); line = reader.readLine(); while (line != null) { builder.append(line); builder.append("\n&quo...
花里胡哨的peeks
莫见乎隐,莫显乎微,故君子慎其独也。一一《礼记》 今天又给hutool提交了PR,将前两天写的动态函数式参数用了起来 https://gitee.com/dromara/hutool/pulls/445 [新特性]你啊,总能给我整出点新花样 【以前使用peek】 1Opt.ofNullable("hutool").peek(user::setUsername).peek(user::setNickname); 【现在使用peeks】 1Opt.ofNullable("hutool").peeks(user::setUsername, user::setNickname); 什么?没看出有什么区别?都差不多???Na Na Na!接着往下看:首先是它使用java动态参数(可变参数)的特性,你可以传入0个或n个你想要的操作,例如: 【以前使用peek】 12345678if (condition) { // 满足条件,我就要把username设置为Opt中的值 hutool.peek(user::setUserna...
nvue引入图标坑
强本而节用,则天不能贫。——荀况 今天把原来的vue页面改为nvue 发现之前的图标怎么都引不进去,搞了半天,后来通过debug发现,我引入的方式是使用添加对应的class给它加了个::before伪元素 知道了这个就很简单了,我们按照官方文档引入字体 首先我在App.vue中写入css代码: 123456/* 加载图标字体 - 条件编译模式 *//* #ifdef APP-PLUS-NVUE */.my-iconfont { font-family: myIconfont;}/* #endif */ 然后在对应的nvue页面中,在beforeCreate生命周期里调用addRule 123456789beforeCreate() { // #ifdef APP-PLUS-NVUE const domModule = uni.requireNativePlugin('dom'); domModule.addRule('fontFace', { fontFamily: 'myIcon...
配置HX模板
如果一条船不知道它要驶向哪个码头,那么任何风都不会是顺风。——塞涅卡 HX就是HBuilder X的缩写,它配置自定义模板在官方文档中也有介绍 这里配置一个简单的uniapp列表页的模板 然后写入我们的自定义模板: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124{ // 注意:本文档仅支持单行注释,并且'//'前不能有任何非空字符!!! // // HBuilderX使用json扩展代码块,兼容vscode的代码块格式 // 本文档修改完毕,保存即可生效,无需重启。 //...
idea全局正则替换
一个不危险的想法不值得被称为想法。——奥斯卡.王尔德 idea的全局替换我们经常使用,但一般我们都是替换指定内容,如把ruben改成achao等 我们也可以开启正则表达式,进行匹配 例如我这里要把所有的以r开头的单词用引号引起来: 我们按下ctrl+shift+r进行替换全局,我这里就用当前页面作为演示了,毕竟懒得还原 我使用ctrl+r打开替换菜单,然后按下alt+x 查找栏输入: expression1(r[a-zA-Z0-9_]+$) 然后替换栏输入: 1"$1" 这里已经可以看到提示了 我们点击替换或者全局替换都可以的,替换后效果如下 如果我们有两个值,例如我这里叫vampire achao,想要给它这样的两个单词打上引号 就可以输入(v[a-zA-Z]+) ([a-zA-Z]+),替换为"$1 $2": 点击替换后效果:
COOL-UI
人有欲望,就有了很多无用的东西,车子,钓鱼竿,篮球……乔想着这些买来只用过一两次的东西,开始认为极简生活,没什么不好。——灵遁者《结束》 今天又发现一个uniapp的UI库:COOL-UI 官方文档:https://uni-docs.cool-js.com/ 而且这个还包含了后端:https://cool-js.com/ 组件选择当然是越多越好啦~
箭头函数和解构赋值混用
一个人的礼貌是一面照出他的肖像的镜子。——歌德 我们在前端对数组进行操作时,如果使用map函数,编写的箭头函数其实也是可以解构的 例如经常遇到的,将一个对象数组中的属性,更换另一个属性名,用于给vue组件传值 写法如下: 1[{name:'achao',id:1},{name:'阿超',id:2}].map(({name:username,id:userId})=>({username,userId})) 注意的是,结构赋值需要打括号,下方再举一个例子,这里用flatMap收集全部的name和id直接变为一个数组 1[{name:'achao',id:1},{name:'阿超',id:2}].flatMap(({name,id})=>[name,id])
动态参数+reduce累加stream
通向面包的小路蜿蜒于劳动的沼泽之中,通向衣裳的小路从一块无花的土地中穿过,无论是通向面包的路还是通向衣裳的路,都是一段艰辛的历程。 ——福斯 今天有朋友问我,stream中如果要将一个User类中的username和id收集起来变成两个list怎么写,我说可以使用peek函数 1234567@Data@AllArgsConstructorstatic class User { private Long id; private Long groupId; private String username;} 就像这样: 1234567891011 // 用户列表 List<User> userList = Stream.iterate(1L, i -> ++i).map(id -> new User(id, 999L, Faker.instance().name().username())).limit(10).collect(Collectors.toList()); // 要收集起来...
ThreadLocal子线程共享
世人缺乏的是毅力,而非气力。——雨果 昨天聊了ThreadLocal可以用作单个线程中变量共享 其底层实现其实就是个Map,用线程作为key,不信可以看这部分源码: 123456789101112131415161718192021/** * Returns the value in the current thread's copy of this * thread-local variable. If the variable has no value for the * current thread, it is first initialized to the value returned * by an invocation of the {@link #initialValue} method. * * @return the current thread's value of this thread-local */public T get() { Thread t = Thread.currentThr...
