个人案例
- 狗狗文档
免安装,免登陆,在移动端快捷创建word文档。
场宁Office word文档扫码体验
- 小程序开发实战
高校大赛系列课程之“小程序开发实战”,是由清华大学和微信团队共制作的小程序学习教程。通过需求分析、原型设计、小程序前端实现、后台接口开发、小程序对接接口,逐步教大家如何“从无到有”完成小程序项目
2021-11-25 - #小程序云开发挑战赛#-魅力单词-未央队
1. 引言 背单词十分枯燥乏味,为了给广大英语学习者提供一个比较好的背英语模式和应用,魅力单词应运而生。 基于微信小程序,天然低门槛、易上手。 2. 应用场景 课间、地铁上、旅途中,任何碎片化时间。 3. 作品简介 魅力单词是一款面向学生的背单词小程序,提供了丰富的单词词库以及好玩的背单词模式。 4. 目标用户 初高中生、大学生,英语爱好者。 5. 实现思路 本小程序基于云开发,用到了云数据库存储数据,使用云函数获取词库列表,随机获取单词词条,图片列表。 按批次拉取数据缓存到内存及localStorage中,实时对比输入内容与当前单词,基于图片奖励,继续循环下个单词。 图片数据:来源于微博。 单词词库:来源于百词斩。 6.流程图 [图片] 7. 效果图 [图片] [图片] [图片] [图片] 8. 功能代码展示 云函数 [图片] 数据库 [图片] 页面源码 [图片] [图片] 9. 作品二维码 [图片] 作品代码仓库地址:请私信 10. 团队简介 团队名称:未央队 团队成员:曹禄丰
2022-03-14 - 社区每周 |接入IP变更通知、接口授权修改公告、社区更新、大赛投票及问题反馈(9.14-9.18)
各位微信开发者: 以下是api.weixin.qq.com接入IP变更通知、小程序收货地址、发票接口授权修改公告、小程序私密消息功能发布、小程序云开发挑战赛初赛投票中、社区支持微信消息提醒及上周我们在社区收到的问题反馈、需求的处理进度,希望同大家一同打造小程序生态。 api.weixin.qq.com接入IP变更通知由于内部网络设备裁撤,api.weixin.qq.com(sz.api.weixin.qq.com)需要更新部分接入点IP。 具体详情,请点击《api.weixin.qq.com接入IP变更通知》详细了解或转发周知。 小程序收货地址、发票接口授权修改公告当前小程序调用收货地址与发票相关接口需要用户进行相应授权: [图片]由于此3个接口均为拉起微信原生页面由用户进行选择,为了方便开发者更好地使用微信开放能力,同时开发者无需进行额外适配,针对以上接口授权进行如下修改: 开发者可以直接调用以上3个接口,无需获取用户授权若开发者调用wx.authorize接口请求以上3个授权,用户侧不会触发授权弹框,直接返回授权成功若开发者调用wx.getSetting接口请求用户的授权状态,会直接读取到以上3个授权为true以上修改从2020年9月25日起生效。 小程序私密消息功能发布小程序私密消息功能是这样一种能力:当分享者分享小程序卡片给其他用户或者微信群后,其他用户点击此小程序卡片时,开发者可以鉴别出点击卡片的用户是否被分享者分享过小程序卡片。能力可详见 文档 小程序云开发挑战赛初赛投票中小程序云开发挑战赛目前已进入初赛阶段: 初赛采用专家评审+投票方式进行,结果计算公式为:专家评分(80%)+ 投票(20%)= 初赛总分。 投票方式:微信开放社区作品介绍文章上点赞,点击参与投票 投票时间:9月21日12:00-9月25日24:00 初赛评选结果公布时间为9月30日,每个赛道将评选出10支队伍进入复赛。 想要了解大赛更多详情,欢迎前往 官网 详细了解。 小程序云开发支持公众号网页开发与环境共享小程序云开发现已支持跨账号环境(资源)共享,也就是一个小程序的云开发资源可以授权给其他小程序 / 公众号使用。 详情可查看 “微信开发者”公众号推文 或 文档 社区支持微信消息提醒问答互动提醒在社区提出问题时,可通过勾选「有回复后微信提醒我」来设置微信客户端接收回复提醒,随时关注问题互动 [图片] 订阅提醒后,也可以在相应问题详情页随时关闭微信提醒 [图片] 公告发布提醒可以在公告的列表页选择微信提醒接收公告发布消息,第一时间了解公告资讯 [图片] 私信接收提醒可以在私信通知栏点击设置图标进入「微信提醒设置页」 [图片] 在「微信提醒设置页」具体配置微信客户端接收私信提醒 [图片] 上周问题反馈和处理进度(09.14-09.18)已修复的问题今天发现短链接无法打开,报 404 的问题 查看详情 小程序在提交修改关联公众号时,显示“系统繁忙,请稍后再试”的问题 查看详情 阅读量清空重新计数的问题 查看详情 微信公众平台管理后台小程序功能设置-其他小程序修改报错的问题 查看详情 修复中的问题视频广告提前关闭,isEnded 返回 true 的问题 查看详情 使用腾讯长地址转短地址之后的短地址,都无法打开的问题 查看详情 iOS新版本下,Map组件的Callout位置向左偏移的问题 查看详情 报错找不到fs模块怎么回事 查看详情 公众号上传视频出现:上传分片错误, ret code:-1 查看详情 scrollview中video全屏退出后,scrollview会回到顶部 查看详情 开发者工具调试器Wxml节点元素是空的 查看详情 编译几次后,调试器选择不了dom元素的问题 查看详情 真机调试看不到日志,每次编译项目都会弹窗“更改appID失败,登录用户不是开发者”的问题 查看详情 ipone7,picker的问题 查看详情 玩小游戏的时候分享出去后游戏概率卡死,整个微信也有几率闪退的问题 查看详情 父级设置缩放后 子级movable-view拖动不到边界的问题 查看详情 iOS14上picker mode=date 选择日期的弹出框变形了的问题 查看详情 picker组件 省市区里面 缺少 四川 - 宜宾 -叙州 这个区的问题 查看详情 使用【新的编译模块】:host 部分样式被过滤掉的问题 查看详情 小程序开发指南文档编辑错误的问题 查看详情 scroll-top和scroll-with-animation冲突bug 查看详情 开发工具要求升级,升级后编译不了的问题 查看详情 公众号里面自带的投票管理功能的问题 查看详情 关于开放域设置数据 setUserCloudStorage 的问题 查看详情 需求反馈需求评估中movable-view组件设置为scale模式后能否设置双指缩放的中心点的需求 查看详情 小程序助手中发布小程序的时候的验证能不能改成反光验证的需求 查看详情 公众号设置视频智能推荐的开关的需求 查看详情 更改公众号显示设置,把原创篇数更改为已发送篇数的需求 查看详情 公众号视频观看更多关闭的需求 查看详情 建议新增文章底部阅读量展示的开关 查看详情 wx.showModal能否新增个open-type属性的需求 查看详情 希望官方能解除【视频消息】下方强制插入的推荐视频的需求 查看详情 input 和 textarea 输入的内容在 iOS 上旁白不朗读的需求 查看详情 微信平台后台素材能否添加删除分组图片的需求 查看详情 定时群发设置更新的需求 查看详情 音频素材批量上传的需求 查看详情 wx.canvasPutImageData 绘制的需求 查看详情 微信团队 2020.09.24
2020-09-24 - 在云开发中使用Puppeteer
- 当前 Bug 的表现(可附上截图) 在本地测试没有问题, 通过云开发上传并部署的时候 1、云端安装依赖的话, 并没有出现success或者fail,正常是会返回fail或者success 2、那个puppeteer需要系统安装一些依赖,可是我不知道怎么才能自动安装系统依赖的配置文件 在linxu上测试过,安装了以下依赖的话是可以正常运行的 puppteer 依赖 sudo apt-get install libasound2 libatk1.0-0 libatk-bridge2.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget [图片] [图片] - 预期表现 [图片] - 复现路径 - 提供一个最简复现 Demo [图片] [图片]
2019-03-05 - 论函数复用的几大姿势
开发过小程序的朋友们应该都遇到这样的情况,可能很多个页面有相同的函数,例如[代码]onShareAppMessage[代码],有什么最佳实践吗,应该如何处理呢? 本次开发技巧,我从以下几种解决办法剖析: 将它复制粘贴到每个地方(最烂的做法) 抽象成一个公共函数,每个[代码]Page[代码]都手动引用 提取一个behavior,每个页面手动注入 通过[代码]Page[代码]封装一个新的[代码]newPage[代码],以后每个页面都通过[代码]newPage[代码]注册 劫持Page函数,注入预设方法,页面仍可使用[代码]Page[代码]注册 复制粘贴大法 这是最直观,也是初学者最常用到的办法。也是作为工程师最不应该采取的办法。这有一个致命的问题,如果某一天,需要改动这个函数,岂不是要将所有的地方都翻出来改,所以这个办法直接否决。 抽象公共函数 这种方式,解决了复制粘贴大法的致命问题,不需要改动很多地方,只需要改动这个抽象出来的函数即可。但是其实,这个方式不便捷,每次新增页面都需要手动引入这个函数。 以下都通过[代码]onShareAppMessage[代码]方法举例。 假设在[代码]app.js[代码]通过[代码]global[代码]注册了[代码]onShareAppMessage[代码]方法: [代码]// app.js global.onShareAppMessage = function() { return { title: '我在这里发现了很多好看的壁纸', path: 'pages/index/index', imageUrl: '' } } [代码] 那么此时每次新增的Page都需要这样引入: [代码]// page.js Page({ ...global.onShareAppMessage, data: {} }) [代码] 这样的缺点也是非常明显的: 创建新页面时,容易遗忘 如果多个相同的函数,则需要每个独立引入,不方便 提取Behavior 将多个函数集成到一个对象中,每个页面只需要引入这个对象即可注入多个相同的函数。这种方式可以解决 抽象公共函数 提到的 缺点2。 大致的实现方式如下: 同样在[代码]app.js[代码]通过[代码]global[代码]注册一个[代码]behavior[代码]对象: [代码]// app.js global.commonPage = { onShareAppMessage: function() { return { title: '我在这里发现了很多好看的壁纸', path: 'pages/index/index', imageUrl: '' } }, onHide: function() { // do something } } [代码] 在新增的页面注入: [代码]// page.js Page({ data: {}, ...global.commonPage, }}) [代码] 缺点仍然是,新增页面时容易遗忘 封装新Page 封装新的[代码]Page[代码],然后每个页面都通过这个新的[代码]Page[代码]注册,而不是采用原有的[代码]Page[代码]。 同理,在[代码]app.js[代码]先封装一个新的[代码]Page[代码]到全局变量[代码]global[代码]: [代码]// app.js global.newPage = function(obj) { let defaultSet = { onShareAppMessage: function() { return { title: '我在这里发现了很多好看的壁纸', path: 'pages/index/index', imageUrl: '' } }, onShow() { // do something } } return Page({...defaultSet, ...obj}) } [代码] 往后在每个页面都使用新的[代码]newPage[代码]注册: [代码]// page.js global.newPage({ data: {} }) [代码] 好处即是全新封装了[代码]Page[代码],后续只需关注是否使用了新的[代码]Page[代码]即可;此外大家也很清晰知道这个是采用了新的封装,避免了覆盖原有的[代码]Page[代码]方法。 我倒是觉得没什么明显缺点,要是非要鸡蛋里挑骨头的话,就是要显式调用新的函数注册页面。 劫持Page 劫持函数其实是挺危险的做法,因为开发人员可能会在定位问题时,忽略了这个被劫持的地方。 劫持[代码]Page[代码]的做法,简单的说就是,覆盖[代码]Page[代码]这个函数,重新实现[代码]Page[代码],但这个新的[代码]Page[代码]内部仍会调用原有的[代码]Page[代码]。说起来可能有点拗口,通过代码看就一目了然: [代码]// app.js let originalPage = Page Page = function(obj) { let defaultSet = { onShareAppMessage: function() { return { title: '我在这里发现了很多好看的壁纸', path: 'pages/index/index', imageUrl: '' } }, onShow() { // do something } } return originalPage({ ...defaultSet, ...obj}) } [代码] 通过这种方式,不改变页面的注册方式,但可能会让不了解底层封装的开发者感到困惑:明明没注册的方法,怎么就自动注入了呢? 这种方式的缺点已经说了,优点也很明显,不改变任何原有的页面注册方式。 其实这个是一个挺好的思路,在一些特定的场景下,会有事半功倍的效果。
2020-03-23 - 原创声明为什么要求字数超过300?
我是一个诗歌创作者,古诗词一般达不到三百字。
2020-06-28