个人案例
- 图略
征集照片小程序、采集视频、收集旅游照片整理的小程序
征集照片小程序、采集视频、收集旅游照片整理的小程序扫码体验
- Fotoo征集一下丨征稿投票评选
一个方便照片征集、视频征集、投稿的小程序
一个方便照片征集、视频征集、投稿的小程序扫码体验
- 口算卡132
口算卡132
口算卡132扫码体验
- 小程序app.onLaunch与page.onLoad异步问题的最佳实践
场景: 在小程序中大家应该都有这样的场景,在onLaunch里用wx.login静默登录拿到code,再用code去发送请求获取token、用户信息等,整个过程都是异步的,然后我们在业务页面里onLoad去用的时候异步请求还没回来,导致没拿到想要的数据,以往要么监听是否拿到,要么自己封装一套回调,总之都挺麻烦,每个页面都要写一堆无关当前页面的逻辑。 直接上终极解决方案,公司内部已接入两年很稳定: 1.可完美解决异步问题 2.不污染原生生命周期,与onLoad等钩子共存 3.使用方便 4.可灵活定制异步钩子 5.采用监听模式实现,接入无需修改以前相关逻辑 6.支持各种小程序和vue架构 。。。 //为了简洁明了的展示使用场景,以下有部分是伪代码,请勿直接粘贴使用,具体使用代码看Github文档 //app.js //globalData提出来声明 let globalData = { // 是否已拿到token token: '', // 用户信息 userInfo: { userId: '', head: '' } } //注册自定义钩子 import CustomHook from 'spa-custom-hooks'; CustomHook.install({ 'Login':{ name:'Login', watchKey: 'token', onUpdate(token){ //有token则触发此钩子 return !!token; } }, 'User':{ name:'User', watchKey: 'userInfo', onUpdate(user){ //获取到userinfo里的userId则触发此钩子 return !!user.userId; } } }, globalData) // 正常走初始化逻辑 App({ globalData, onLaunch() { //发起异步登录拿token login((token)=>{ this.globalData.token = token //使用token拿用户信息 getUser((user)=>{ this.globalData.user = user }) }) } }) //关键点来了 //Page.js,业务页面使用 Page({ onLoadLogin() { //拿到token啦,可以使用token发起请求了 const token = getApp().globalData.token }, onLoadUser() { //拿到用户信息啦 const userInfo = getApp().globalData.userInfo }, onReadyUser() { //页面初次渲染完毕 && 拿到用户信息,可以把头像渲染在canvas上面啦 const userInfo = getApp().globalData.userInfo // 获取canvas上下文 const ctx = getCanvasContext2d() ctx.drawImage(userInfo.head,0,0,100,100) }, onShowUser() { //页面每次显示 && 拿到用户信息,我要在页面每次显示的时候根据userInfo走不同的逻辑 const userInfo = getApp().globalData.userInfo switch(userInfo.sex){ case 0: // 走女生逻辑 break case 1: // 走男生逻辑 break } } }) 具体文档和Demo见↓ Github:https://github.com/1977474741/spa-custom-hooks 祝大家用的愉快,记得star哦
2023-04-23 - 七牛直传插件(vktool),给你飞的翅膀
为什么要写这样一个插件 中小公司或个人都会把资源文件放到七牛上,小程序在做上传时,都要依赖服务端生成 token; 1. 服务端生成 token 代码都要写一遍 2. 一些七牛的坑或限制也要淌一遍 3. 分块、分片都实现一遍 基于这些原因写了这个小程序插件(vktool),使用云开发生成 token; 这个插件源码开放(https://github.com/myzingy/wx-plugin-oxoo), 不会储存你的ak\sk,如果你不放心,可以直接部署成你的插件; 针对七牛的处理 图片处理(20兆以内) 一般为了加快图片加载,七牛图片都会增加类似 ?imageView2/3/w/980 的缩略图方式,但如果图片很大,超过20兆时,七牛直接就报错了,图片也显示不出来,针对这个问题,生成token 上传策略时,特意另存了一份.lim.jpg 的瘦身文件。 分片上传后的 lim 文件 2.1 分片真是个复杂的事,坑已淌好,这个插件已处理好,你可以直接用; //图片瘦身另存为lim options.persistentOps = ‘imageslim|saveas/$(x:limkey)’,分片上传后一直不生成lim文件,提交了工单,七牛给出了解决方案(七牛技术服务响应很高效),需要做2次urlsafeBase64Encode [图片] 2.2 小程序 FileSystemManager.readFileSync 真机目前只能支持10兆内的文件,超过10兆直接报错,等小程序官方修复吧;目前分片上传只能支持10兆以下文件,意义不大; 即使你不用插件,希望这些坑也能帮到你,毕竟源码都给你了 案例 [图片] 自己写了个小程序 图略,新建活动或发布照片都可以体验七牛直传;
2020-04-23