uniapp微信小程序获取用户手机号
价值产生信心,信心产生热忱,而热忱则征服世界。——华特·H·柯亭姆 我们在uniapp开发中有时会需要获取用户的手机号 可以在官方文档找到对应的方法 这里注意一点,只能通过button进行点击获取 但我们这样获取到后还需要解密 比如我这里获取到的 123456789101112131415161718<template> <view><button open-type="getPhoneNumber" @getphonenumber="getPhoneNumber">点我获取手机号</button></view></template><script>export default { data() { return {}; }, methods: { getPhoneNumber(e) { console.log(e.detail.errMsg); console.log...
Json Web Token
我以为人们在每一个时期都可以过有趣而且有用的生活。我们应该不虚度一生,应该能够说,“我已经做了我能做的事”,人们只能要求我们如此,而且只有这样我们才能有一点欢乐——居里夫人 项目源码 校验逻辑如下: 我们客户端在每个需要登录的请求带着token访问我们的接口,在服务端的LoginInterceptor中进行校验token 登录逻辑如下: 1.登录校验用户名密码 2.生成token:通过jwt工具类,使用用户名和密码生成token,然后把token存redis,设置过期时间 刷新token逻辑如下: token过期后返回 “token过期对应的code”,客户端使用一个大于token过期时间的refreshToken去调用刷新token的接口,refreshToken通过校验之后,直接生成新的token 我这里设置的两倍,这样在超过token有效期一倍,小于两倍时,期间可以刷新token,再超时就需要重新登录了 项目大家可以拉下来玩一玩
appendTo
人类经常把一个生涯发生的事,撰写成历史,在从那里看人生;其实,那不过是衣服,人生是内在的——罗曼。罗兰 我们可以使用jquery中的appendTo函数在一个标签追加到另一个标签内部的结尾 例如我博客这里 我们再执行 1$("<span>ruben</span>").appendTo(".navbar-brand") 执行完成后效果如下 <span>ruben</span>追加到我们的”阿超”后面了
js动态调用函数
兵无常势,水无常形,能因敌变化而取胜者,谓之神。——孙子 我们可以使用变量名['函数名']()去调用一个函数 12345678<script> var ruben = { run() { console.log("ruben中的run被调用啦!") } } ruben['run']()</script> 可以用于动态调用函数场景
关于wx.getUserInfo获取到匿名数据的坑
生命的黎明是乐园,青春才是真正的天堂。——华兹华斯 今天搞了很久,发现使用wx.getUserInfo获取到的用户昵称一直是:“微信用户”,并且头像也是默认的。。。 然后官方文档里发现 https://developers.weixin.qq.com/miniprogram/dev/api/open-api/user-info/wx.getUserInfo.html 打开后是这个页面 然后我们看wx.getUserProfile的文档: wx.getUserProfile只能在页面产生点击事件(例如 button 上 bindtap 的回调中)后才可调用每次请求都会弹出授权窗口,用户同意后返回 userInfo。该接口用于替换 wx.getUserInfo,详见 用户信息接口调整说明。 注意desc是必填 我们配置好appid后 调用wx.getUserProfile 代码如下 12345678910111213141516171819202122232425262728<template> <view style="width:1...
uniapp中textarea坑
幼稚是会成长,会成熟的。只要不衰老,腐败,就好。——鲁迅 今天在使用uniapp进行开发的时候,发现一个关于textarea标签的坑 代码如下: 12345<template> <view style="width:100%;height: 100%;"> <textarea style="width:100%;height: 100%;" value=" 一般来讲,我们都必须务必慎重的考虑考虑。 带着这些问题,我们来审视一下阿超。 总结的来说, 每个人都不得不面对这些问题。 在面对这种问题时, 阿超因何而发生? 带着这些问题,我们来审视一下阿超。 所谓阿超,关键是阿超需要如何写。 从这个角度来看, 德谟克利特说过一句富有哲理的话,节制使快乐增加并使享受加强。我希望诸位也能好好地体会这句话。 那么, 培根曾经提到过,阅读使人充实,会谈使人敏捷,写作使人精确。这不禁令我深思。 问题的关键究竟为何。 康德在不经意间这样说过,既然我已经踏上这条道路,那么,任何东西都不应妨碍我沿着这条路走下去。这启发...
flatMap
君子成人之美,不成人之恶。小人反是。——《论语》 在Stream中有这么一个函数 它和map不一样的是,map你输入多少个,输出就是多少个 例如我要生成一个集合,装着26个小写字母和26个大写字母 用flatMap可以一行实现 12List<String> abc = Stream.iterate('a', i -> ++i).map(String::valueOf).limit(26).flatMap(i -> Stream.concat(Stream.of(i), Stream.of(i).map(String::toUpperCase))).sorted().collect(Collectors.toList());System.out.println(abc); 马上这时候就有人跳出来说,我不用flatMap还不是可以!!!不信你看 12List<Character> ab = Stream.iterate('A', i -> ++i).limit(58).filter(i -&g...
vue中:class的小技巧
在快乐时,朋友会认识我们;在患难时,我们会认识朋友。——柯林斯 我们在进行vue开发的时候 有时会有根据条件给标签进行不同的class配置 我们都知道可以使用:class实现动态配置 但如果我们本身需要一些固定的样式,一般是在:class中判断的时候加上 例如我这里写一个div标签,加了少许样式 1234567891011121314151617<script>export default { data() { return { additionalClass: 'red' }; }};</script><style scoped="scoped"> .red{ background: red; } .big{ height: 200px; }</style> 我们这里使用了模板字符串去做 1<div :class="`big ${additional...
thymeleaf格式化时间
牙齿痛的人,想世界上有一种人最快乐,那就是牙齿不痛的人。——萧伯纳 将返回的日期类型在页面上显示为指定的格式 首先是格式化Date类型 1<span th:text="${#dates.format(data.gmtCreate,'yyyy-MM-dd HH:mm:ss')}"></span> 然后是LocalDateTime等Temporal类 1<span th:text="${#temporals.format(data.gmtCreate,'yyyy-MM-dd HH:mm:ss')}"></span>
uni跳转的小技巧
青春啊,难道你始终囚禁在狭小圈子里?你得撕破老年的蛊惑人心的网。——泰戈尔 从官网看到 我们使用uni.navigate()跳转 123uni.navigateTo({ url: 'test?id=1&name=uniapp'}); 这里我们的url我们如果直接写test 那么我们会跳转到当前页面的test 然而我们如果想跳转到tabBar上的页面 则需要使用uni.switchTab() 123uni.switchTab({ url: '/pages/index/index'}); 这里要注意的是,需要在路径前加/表示一个根路径 否则会跳转不到想要的页面 而且switchTab并不支持url传参 而我们需要使用别的方式,例如setStorage
