微信小程序开发文档 第73页
微信小程序定义文件 微信小程序 API 的 TypeScript 类型定义文件 安装 通过 npm 安装: # 安装对应最新基础库的定义文件 npm install miniprogram-api-typings 或者通过版本号指定一个基础库版本: # 安装对应基础库版本 2.4.1 的定义文件 npm install miniprogram-api-typings@2.4.1 版本 基础库版本 npm 版本 命令 v2.6.5 2.6.5-2 npm install miniprogram-api-typings@2.6.5-2 v2.4.2 2.4.2-2 npm install miniprogram-api-typings@2.4.2-2 v2.4.1 2.4.1 npm install miniprogram-api-typings@2.4.1 v2.4.0 2.4.0-1 npm install miniprogram-api-typings@2.4.0-1 贡献 定义文件是随 文档 一起自动生成的,所以所有的 PR 都将 不会 被接受。如果您有 bug 反馈或建议,请提一个 issue 给我们。非常感谢!
小程序瘦身工具 通过剔除无用文件、压缩图片、复用代码等方式减少小程序代码包体积。开源项目地址:https://github.com/wechat-miniprogram/miniprogram-slim。 安装 npm install -g miniprogram-slim 使用 Usage: miniprogram-slim <command> Options: -v, --version output the version number -h, --help output usage information Commands: cpd [options] <dir> Detect duplications in source code sprite [options] <input...> Covert images into css sprites imagemin [options] <input...> Minify images seamlessly analyzer [options] Analyze dependencies of miniprogram, find out unused files Examples: $ miniprogram-slim analyzer -t $ miniprogram-slim cpd src $ miniprogram-slim imagemin images/**/*.png $ miniprogram-slim sprite -f emoji images/**/*.png
微信同声传译 微信同声传译插件是微信自研的语音输入,文本翻译等功能的插件封装,用于提供给第三方小程序调用。 体验入口 语音输入 提供语音的实时流式识别能力。 通过获取全局唯一的语音识别管理器recordRecoManager实现 recordRecoManager recordRecoManager 对象的方法列表: 方法 参数 说明 start options 开始识别 stop 结束识别 onStart callback 正常开始录音识别时会调用此事件 onRecognize callback 有新的识别内容返回,则会调用此事件 onStop callback 识别结束事件 onError callback 识别错误事件 start(options)说明: 属性 类型 必填 默认值 说明 duration Number 否 60000 指定录音的时长,单位ms,最大为60000。如果传入了合法的 duration ,在到达指定的 duration 后会自动停止录音 lang String 否 zh_CN 识别的语言,目前支持zh_CN en_US zh_HK sichuanhua onStart(callback)回调结果说明: 属性 类型 说明 msg String 默认Ok onStop(callback)回调结果说明: 属性 类型 说明 tempFilePath String 录音临时文件地址 duration Number 录音总时长,单位: ms fileSize Number 文件大小,单位: B result String 最终识别结果 onError(callback)回调结果说明: 属性 类型 说明 retcode Int 错误码 msg String 错误信息 onRecognize(callback)回调结果说明: 属性 类型 说明 result String 识别结果 onError错误码说明: 错误码 说明 -30001 录音接口出错 -30002 录音暂停接口被调用,录音终止,识别终止 -30003 录音帧数据未产生或者发送失败导致的数据传输失败 -30004 因网络或者其他非正常状态导致的未查询识别结果 -30005 语音识别服务内部错误 -30006 语音识别服务未在限定时间内识别完成 -30007 start启动参数错误 -30008 查询请求时网络失败 -30009 创建鉴权内部失败 -30010 发送鉴权时网络失败 -30011 试图在识别正在进行中是再次调用start,返回错误,正在进行的识别任务正常进行 -30012 当前无识别任务进行时调用stop错误 -30013 其他未知错误...
API 服务平台 除基础组件与接口能力外,「小程序·服务平台」还为小程序开发者提供更丰富的增值能力,开发者可根据需求,选购不同规格的资源包。购买后,通过调用小程序原生快捷接入服务平台内的能力,丰富小程序的功能。 AI 微信OCR识别 微信OCR识别能力是微信团队推出的一套提升移动端快捷信息录入 的工具,目前支持身份证、银行卡、行驶证、营业执照的 OCR 识别。 智能对话服务 微信智能对话服务是以对话交互为核心, 为有客服需求的个人、企业和组织提供智能对话系统的搭建。 夸夸话术服务 夸夸话术服务是以对话交互为基础,为用户提供花式夸人的互动娱乐服务。用户接入服务后,可以通过相关的描述语句来唤醒夸夸技能。开发者可以将该技能应用到智能对话、客服等场景中。 商品二分类服务 商品二分类服务提供可灵活调用的接口,能够判断用户输入的自然语言文本是否与商品相关。开发者可以利用该接口赋能自己的智能搜索、商品服务等场景。 多语言翻译 提供多语言翻译能力 讲笑话情话服务 讲笑话情话服务是以对话交互为基础,为用户提供普通笑话、冷笑话、情话等互动娱乐服务。用户接入服务后,可以通过相关的触发语句来唤醒对应技能。开发者可以将该服务应用到智能对话、客服等场景中。 情感分析服务 情感分析服务是以自然语言处理技术为基础,为有文本分析需求的个人、企业或组织提供识别给定语句的情感状态的能力。具体包括正面、负面、无情感三类。开发者可以将该服务应用到商品评论分析、智能对话、舆情监控等场景中。 商品关键词抽取服务 商品关键词抽取服务提供可灵活调用的接口,能够从电商商品标题中抽取关键词,包括商品名、品牌名、修饰词、营销词、颜色、材质、时间季节、地点、型号、尺寸规格单位共10类。开发者可以利用该接口赋能自己的智能客服、商品服务等场景。 人脸检测与分析 检测给定图片中的人脸位置、相应的面部属性和人脸质量信息。面部属性包括性别、年龄、表情、魅力、眼镜、发型、口罩和姿态 ,人脸质量信息包括整体质量分、模糊分、光照分和五官遮挡分。 人脸年龄变化 用户上传一张人脸图片,基于人脸编辑与生成算法,输出一张人脸变老或变年轻的图片,支持实现人脸不同年龄的变化。从童年到老年,细粒度变化,效果逼真,趣味十足。 人脸美颜 用户上传一张人脸图片,精准定位五官,实现美肤、亮肤、祛痘等美颜功能。 人脸试唇色 对图片中的人脸嘴唇进行着色,最多支持同时对一张图中的3张人脸进行试唇色。 人脸性别变换 用户上传一张人脸图片,基于人脸编辑与生成算法,输出一张人脸性别转换的图片。男变女可实现美颜、淡妆、加刘海和长发的效果;女变男可实现加胡须、变短发的效果。 人像分割 识别传入图片中人体的完整轮廓,进行抠像。 五官定位 对请求图片进行五官定位(也称人脸关键点定位),计算构成人脸轮廓的 90 个点,包括眉毛(左右各8点)、眼睛(左右各8点)、鼻子(13点)、嘴巴(22点)、脸型轮廓(21点)、眼珠[或瞳孔](2点)。 内容 文本内容安全 对文本中可能含有的色情、暴恐、时政违规等有害信息进行识别,帮助开发者大幅降低内容违规风险,有效控制审核成本投入。 图片内容安全 图片内容安全是基于腾讯海量数据资源和深度学习技术,为互联网企业用户提供图片内容的智能审核服务,不仅能帮助用户降低色情、暴力恐怖、时政违规等内容风险,而且能大幅度节省人工审核成本,保护业务健康发展。 地点搜索 基于腾讯位置服务千万级鲜活地点(POI)数据,提供结合搜索关键词的周边、城市范围、矩形范围(屏幕视野内)等多种地理位置搜索能力,同时提供分类筛选功能,满足不同场景的地点搜索需要。 坐标转换 实现从其它地图供应商坐标系或标准GPS坐标系,批量转换到腾讯地图坐标系,使之可以在微信小程序地图中准确标注与使用。 关键词输入提示 用于获取输入地点关键字的补完与提示,提供了面向创建收货/服务地址、打车目的地搜索及位置签到搜索等多种场景策略。服务基于海量点击行为挖掘、训练,准确命中用户所想,平均输入3.2个字即可获取准确结果。 驾车路线规划 基于驾车场景的智能路线计算引擎,支持多途经点、结合实时路况、不走高速、少收费等多种偏好设置功能,支持车牌限行避让策略,并专为网约车提供接驾、送驾场景的路线规划策略。 步行路线规划 结合海量步行道路、过街天桥、地下通道及人行出入口等设施数据,提供智能步行路线规划服务。 地址解析 提供由文字地址到经纬度坐标的转换的能力,可一定程度上兼容地址本身不规范的问题(如错别字,省市区与门牌、地点不匹配、各类干扰词等情况),同时支持返回省市区、行政区划代码信息。 逆地址解析 提供经纬度坐标到结构化地址的转换能力,结果包含对坐标位置的文字描述、省市区等行政区划信息、门牌号、商圈、道路与交叉口以及周边地点列表等,服务响应快速稳定,对微信、美团、快手等超级APP提供可靠支撑。 安全 腾讯云正版曲库直通车 正版曲库直通车是基于腾讯音乐娱乐集团海量线上背景音乐专用曲库资源,结合腾讯云存储、内容加速分发等基础能力,为解决内容创作过程中的正版背景音乐素材应用问题设计的 PaaS 产品。
多端统一开发工具——kbone kbone 是一个致力于微信小程序和 Web 端同构的解决方案。 简介 微信小程序的底层模型和 Web 端不同,我们想直接把 Web 端的代码挪到小程序环境内执行是不可能的。kbone 的诞生就是为了解决这个问题,它实现了一个适配器,在适配层里模拟出了浏览器环境,让 Web 端的代码可以不做什么改动便可运行在小程序里。 这里有个简单的代码片段:https://developers.weixin.qq.com/s/R9Hm0Qm67Acd,可以使用开发者工具打开看看效果。 因为 kbone 是通过提供适配器的方式来实现同构,所以它的优势很明显: 大部分流行的前端框架都能够在 kbone 上运行,比如 Vue、React、Preact 等。 支持更为完整的前端框架特性,因为 kbone 不会对框架底层进行删改(比如 Vue 中的 v-html 指令、Vue-router 插件)。 提供了常用的 dom/bom 接口,让用户代码无需做太大改动便可从 Web 端迁移到小程序端。 在小程序端运行时,仍然可以使用小程序本身的特性(比如像 live-player 内置组件、分包功能)。 提供了一些 Dom 扩展接口,让一些无法完美兼容到小程序端的接口也有替代使用方案(比如 getComputedStyle 接口)。 使用 为了可以让开发者可以更自由地进行项目的搭建,以下提供了三种方式,任选其一即可: 使用 kbone-cli 快速开发 对于新项目,可以使用 kbone-cli 来创建项目,首先安装 kbone-cli: npm install -g kbone-cli 创建项目: kbone init my-app 进入项目,按照 README.md 的指引进行开发: // 开发小程序端 npm run mp // 开发 Web 端 npm run web // 构建 Web 端 npm run build PS:项目基于 webpack 构建,关于 webpack 方面的配置可以点此查看,而关于小程序构建相关的详细配置细节可以参考此文档。 使用模板快速开发 除了使用 kbone-cli 外,也可以直接将现有模板 clone 下来,然后在模板基础上进行开发改造: Vue 项目模板 React 项目模板 kbone-ui 项目模板 Preact 项目模板 Omi 项目模板 项目 clone 下来后,按照项目中 README.md 的指引进行开发。 手动配置开发 此方案基于 webpack 构建实现,如果你不想要使用官方提供的模板,想要更灵活地搭建自己的项目,又或者是想对已有的项目进行改造,则需要自己补充对应配置来实现 kbone 项目的构建。 一般需要补充两个配置: 构建到小程序代码的 webpack 配置 使用 webpack 构建中使用到的特殊插件 mp-webpack-plugin 配置 点此可以查看具体配置方式和操作流程。...
Cloud.uploadFile() 支持端:小程序 , 云函数 , Web 将本地资源上传至云存储空间,如果上传至同一路径则是覆盖
Expression 聚合表达式 说明 表达式可以是字段路径、常量、或聚合操作符。表达式可以嵌套表达式。 字段路径 表达式用字段路径表示法来指定记录中的字段。字段路径的表示由一个 $ 符号加上字段名或嵌套字段名。嵌套字段名用点将嵌套的各级字段连接起来。如 $profile 就表示 profile 的字段路径,$profile.name 就表示 profile.name 的字段路径(profile 字段中嵌套的 name 字段)。 常量 常量可以是任意类型。默认情况下 $ 开头的字符串都会被当做字段路径处理,如果想要避免这种行为,使用 AggregateCommand.literal 声明为常量。 聚合操作符 AggregateCommand
AggregateCommand 数据库聚合操作符,通过 db.command.aggregate 获取 方法 AggregateCommand.abs(value: Expression<number>): Object 聚合操作符。返回一个数字的绝对值。 AggregateCommand.add(value: Expression[]): Object 聚合操作符。将数字相加或将数字加在日期上。如果数组中的其中一个值是日期,那么其他值将被视为毫秒数加在该日期上。 AggregateCommand.addToSet(value: Expression): Object 聚合操作符。聚合运算符。向数组中添加值,如果数组中已存在该值,不执行任何操作。它只能在 group stage 中使用。 AggregateCommand.allElementsTrue(value: Expression[]): Object 聚合操作符。输入一个数组,或者数组字段的表达式。如果数组中所有元素均为真值,那么返回 true,否则返回 false。空数组永远返回 true。 AggregateCommand.and(value: Expression[]): Object 聚合操作符。给定多个表达式,and 仅在所有表达式都返回 true 时返回 true,否则返回 false。 AggregateCommand.anyElementTrue(value: Expression[]): Object 聚合操作符。输入一个数组,或者数组字段的表达式。如果数组中任意一个元素为真值,那么返回 true,否则返回 false。空数组永远返回 false。 AggregateCommand.arrayElemAt(value: Expression[]): Object 聚合操作符。返回在指定数组下标的元素。 AggregateCommand.arrayToObject(value: any): Object 聚合操作符。将一个数组转换为对象。 AggregateCommand.avg(value: Expression<number>): Object 聚合操作符。返回一组集合中,指定字段对应数据的平均值。 AggregateCommand.ceil(value: Expression<number>): Object 聚合操作符。向上取整,返回大于或等于给定数字的最小整数。 AggregateCommand.cmp(value: Expression[]): Object 聚合操作符。给定两个值,返回其比较值: AggregateCommand.concat(value: Expression[]): Object 聚合操作符。连接字符串,返回拼接后的字符串。 AggregateCommand.concatArrays(value: Expression[]): Object 聚合操作符。将多个数组拼接成一个数组。 AggregateCommand.cond(value: any): Object 聚合操作符。计算布尔表达式,返回指定的两个值其中之一。 AggregateCommand.dateFromParts(value: any): Object 聚合操作符。给定日期的相关信息,构建并返回一个日期对象。 AggregateCommand.dateFromString(value: any): Object 聚合操作符。将一个日期/时间字符串转换为日期对象 AggregateCommand.dateToString(value: any): Object 聚合操作符。根据指定的表达式将日期对象格式化为符合要求的字符串。 AggregateCommand.dayOfMonth(value: Expression<string>): Object 聚合操作符。返回日期字段对应的天数(一个月中的哪一天),是一个介于 1 至 31 之间的数字。 AggregateCommand.dayOfWeek(value: Expression<string>): Object 聚合操作符。返回日期字段对应的天数(一周中的第几天),是一个介于 1(周日)到 7(周六)之间的整数。 AggregateCommand.dayOfYear(value: Expression<string>): Object 聚合操作符。返回日期字段对应的天数(一年中的第几天),是一个介于 1 到 366 之间的整数。 AggregateCommand.divide(value: Expression[]): Object 聚合操作符。传入被除数和除数,求商。 AggregateCommand.eq(value: Expression[]): Object 聚合操作符。匹配两个值,如果相等则返回 true,否则返回 false。 AggregateCommand.exp(value: Expression<number>): Object 聚合操作符。取 e(自然对数的底数,欧拉数) 的 n 次方。 AggregateCommand.filter(value: any): Object 聚合操作符。根据给定条件返回满足条件的数组的子集。 AggregateCommand.first(value: Expression): Object 聚合操作符。返回指定字段在一组集合的第一条记录对应的值。仅当这组集合是按照某种定义排序( sort )后,此操作才有意义。 AggregateCommand.floor(value: Expression<number>): Object 聚合操作符。向下取整,返回大于或等于给定数字的最小整数。 AggregateCommand.gt(value: Expression[]): Object 聚合操作符。匹配两个值,如果前者大于后者则返回 true,否则返回 false。 AggregateCommand.gte(value: Expression[]): Object 聚合操作符。匹配两个值,如果前者大于或等于后者则返回 true,否则返回 false。 AggregateCommand.hour(value: Expression<string>): Object 聚合操作符。返回日期字段对应的小时数,是一个介于 0 到 23 之间的整数。 AggregateCommand.ifNull(value: Expression[]): Object 聚合操作符。计算给定的表达式,如果表达式结果为 null、undefined 或者不存在,那么返回一个替代值;否则返回原值。...
Command 数据库操作符,通过 db.command 获取 属性 AggregateCommand aggregate 聚合操作符 方法 Command.addToSet(value: any|Object): Command 数组更新操作符。原子操作。给定一个或多个元素,除非数组中已存在该元素,否则添加进数组。 Command.all(values: any[]): Command 数组查询操作符。用于数组字段的查询筛选条件,要求数组字段中包含给定数组的所有元素。 Command.and(expressions: any[]): Command 查询操作符,用于表示逻辑 “与” 的关系,表示需同时满足多个查询筛选条件 Command.bit(object: Object): Command 更新操作符。对字段进行位运算,可以进行 and/or/xor 运算。 Command.elemMatch(condition: Object|Command): Command 用于数组字段的查询筛选条件,要求数组中包含至少一个满足 elemMatch 给定的所有条件的元素 Command.eq(value: any): Command 查询筛选条件,表示字段等于某个值。eq 指令接受一个字面量 (literal),可以是 number, boolean, string, object, array, Date。 Command.exists(value: boolean): Command 判断字段是否存在 Command.expr(aggregateExpression: Expression): Command 查询操作符,用于在查询语句中使用聚合表达式,方法接收一个参数,该参数必须为聚合表达式 Command.geoIntersects(options: Object): Command 找出给定的地理位置图形相交的记录 Command.geoNear(options: Object): Command 按从近到远的顺序,找出字段值在给定点的附近的记录。 Command.geoWithin(options: Object): Command 找出字段值在指定区域内的记录,无排序。指定的区域必须是多边形(Polygon)或多边形集合(MultiPolygon)。 Command.gt(value: any): Command 查询筛选操作符,表示需大于指定值。可以传入 Date 对象用于进行日期比较。 Command.gte(value: any): Command 查询筛选操作符,表示需大于或等于指定值。可以传入 Date 对象用于进行日期比较。 Command.in(value: any[]): Command 查询筛选操作符,表示要求值在给定的数组内。 Command.inc(value: number): Command 更新操作符,原子操作,用于指示字段自增 Command.lt(value: any): Command 查询筛选操作符,表示需小于指定值。可以传入 Date 对象用于进行日期比较。 Command.lte(value: any): Command 查询筛选操作符,表示需小于或等于指定值。可以传入 Date 对象用于进行日期比较。 Command.max(value: any): Command 更新操作符,给定一个值,只有该值大于字段当前值才进行更新。 Command.min(value: any): Command 更新操作符,给定一个值,只有该值小于字段当前值才进行更新。 Command.mod(divisor: number, remainder: number): Command 查询筛选操作符,给定除数 divisor 和余数 remainder,要求字段作为被除数时 value % divisor = remainder。 Command.mul(value: number): Command 更新操作符,原子操作,用于指示字段自乘某个值 Command.neq(value: any): Command 查询筛选条件,表示字段不等于某个值。eq 指令接受一个字面量 (literal),可以是 number, boolean, string, object, array, Date。 Command.nin(value: any[]): Command 查询筛选操作符,表示要求值不在给定的数组内。 Command.nor(expressions: any[]): Command 查询操作符,用于表示逻辑 “都不” 的关系,表示需不满足指定的所有条件。如果记录中没有对应的字段,则默认满足条件。 Command.not(command: Command): Command 查询操作符,用于表示逻辑 “非” 的关系,表示需不满足指定的条件。 Command.or(expressions: any[]): Command 查询操作符,用于表示逻辑 “或” 的关系,表示需同时满足多个查询筛选条件。或指令有两种用法,一是可以进行字段值的 “或” 操作,二是也可以进行跨字段的 “或” 操作。 Command.pop(): Command 数组更新操作符,对一个值为数组的字段,将数组尾部元素删除 Command.pull(value: any): Command 数组更新操作符。给定一个值或一个查询条件,将数组中所有匹配给定值或查询条件的元素都移除掉。 Command.pullAll(value: any): Command 数组更新操作符。给定一个值或一个查询条件,将数组中所有匹配给定值的元素都移除掉。跟 pull 的差别在于只能指定常量值、传入的是数组。 Command.push(values: Object): Command 数组更新操作符。对一个值为数组的字段,往数组添加一个或多个值。或字段原为空,则创建该字段并设数组为传入值。 Command.remove(): Command...
Aggregate 数据库集合的聚合操作实例 方法 Aggregate.addFields(object: Object): Aggregate 聚合阶段。添加新字段到输出的记录。经过 addFields 聚合阶段,输出的所有记录中除了输入时带有的字段外,还将带有 addFields 指定的字段。 Aggregate.bucket(object: Object): Aggregate 聚合阶段。将输入记录根据给定的条件和边界划分成不同的组,每组即一个 bucket。 Aggregate.bucketAuto(object: Object): Aggregate 聚合阶段。将输入记录根据给定的条件划分成不同的组,每组即一个 bucket。与 bucket 的其中一个不同之处在于无需指定 boundaries,bucketAuto 会自动尝试将记录尽可能平均的分散到每组中。 Aggregate.count(fieldName: string): Aggregate 聚合阶段。计算上一聚合阶段输入到本阶段的记录数,输出一个记录,其中指定字段的值为记录数。 Aggregate.end(): Promise<Object> 标志聚合操作定义完成,发起实际聚合操作 Aggregate.geoNear(options: Object): Aggregate 聚合阶段。将记录按照离给定点从近到远输出。 Aggregate.group(object: Object): Aggregate 聚合阶段。将输入记录按给定表达式分组,输出时每个记录代表一个分组,每个记录的 _id 是区分不同组的 key。输出记录中也可以包括累计值,将输出字段设为累计值即会从该分组中计算累计值。 Aggregate.limit(value: number): Aggregate 聚合阶段。限制输出到下一阶段的记录数。 Aggregate.lookup(object: Object): Aggregate 聚合阶段。聚合阶段。联表查询。与同个数据库下的一个指定的集合做 left outer join(左外连接)。对该阶段的每一个输入记录,lookup 会在该记录中增加一个数组字段,该数组是被联表中满足匹配条件的记录列表。lookup 会将连接后的结果输出给下个阶段。 Aggregate.match(object: Object): Aggregate 聚合阶段。根据条件过滤文档,并且把符合条件的文档传递给下一个流水线阶段。 Aggregate.project(object: Object): Aggregate 聚合阶段。把指定的字段传递给下一个流水线,指定的字段可以是某个已经存在的字段,也可以是计算出来的新字段。 Aggregate.replaceRoot(object: Object): Aggregate 聚合阶段。指定一个已有字段作为输出的根节点,也可以指定一个计算出的新字段作为根节点。 Aggregate.sample(size: number): Aggregate 聚合阶段。随机从文档中选取指定数量的记录。 Aggregate.skip(value: number): Aggregate 聚合阶段。指定一个正整数,跳过对应数量的文档,输出剩下的文档。 Aggregate.sort(object: Object): Aggregate 聚合阶段。根据指定的字段,对输入的文档进行排序。 Aggregate.sortByCount(object: Object): Aggregate 聚合阶段。根据传入的表达式,将传入的集合进行分组(group)。然后计算不同组的数量,并且将这些组按照它们的数量进行排序,返回排序后的结果。 Aggregate.unwind(value: string|object): Aggregate 聚合阶段。使用指定的数组字段中的每个元素,对文档进行拆分。拆分后,文档会从一个变为一个或多个,分别对应数组的每个元素。