https://developers.weixin.qq.com/miniprogram/dev/framework/quickstart/#小程序简介
通过绑定按钮 bindgetuserinfo 事件和小程序 wx.getSetting() 方法获取
在 minapp 中,你只需要在 wxml 模板中给组件的属性名后加上 .sync 就可以实现双向绑定
在 wxml 标签添加 wx:for 属性并赋值循环数据即可渲染
在 wxml 标签添加 wx:if 属性并赋值判断变量即可渲染
使用 name 属性,作为模板的名字。然后在<template/>内定义代码片段,如
<template name="msgItem"> <view> <text> {{index}}: {{msg}} </text> <text> Time: {{time}} </text> </view> </template>使用导航组件实现,例如 <navigator url="/pages/home/home">跳转</navigator>
通过内置 api 实现,例如 wx.redirectTo({url: /pages/home/home})、 wx.navigateBack({delta: 1})、wx.navigatorTo({url:/pages/home/home})
微信小程序内置接口 wx.chooseAddress() 实现
官方文档:
https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/page-life-cycle.htmlonload() 页面加载时触发。一个页面只会调用一次,可以在 onLoad 的参数中获取打开当前页面路径中的参数 onShow() 页面显示/切入前台时触发 onReady() 页面初次渲染完成时触发。一个页面只会调用一次,代表页面已经准备妥当,可以和视图层进行交互 onHide() 页面隐藏/切入后台时触发。 如 navigateTo 或底部 tab 切换到其他页面,小程序切入后台等 onUnload() 页面卸载时触发。如 redirectTo 或 navigateBack 到其他页面时
官方文档:
https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/share.html转发: 获取更多转发信息 通常开发者希望转发出去的小程序被二次打开的时候能够获取到一些信息,例如群的标识。现在通过调用 wx.showShareMenu 并且设置withShareTicket 为 true ,当用户将小程序转发到任一群聊之后,此转发卡片在群聊中被其他用户打开时,可以在 App.onLaunch 或 App.onShow 获取到一个 shareTicket。通过调用 wx.getShareInfo 接口传入此 shareTicket 可以获取到转发信息。
页面内发起转发 基础库 1.2.0 开始支持,低版本需做兼容处理。
通过给 button 组件设置属性 open-type="share",可以在用户点击按钮后触发 Page.onShareAppMessage 事件,相关组件:button。
**步:要通过 wx.openSetting 接口拿到用户的授权, 第二步:在拿到用户授权以后,使用微信的 wx.getLocation 接口获取当前位置的经纬度, 第三步:结合第三方地图接口查询区域信息
文档:
https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/自定义组件 从小程序基础库版本 1.6.3 开始,小程序支持简洁的组件化编程。所有自定义组件相关特性都需要基础库版本 1.6.3 或更高。
开发者可以将页面内的功能模块抽象成自定义组件,以便在不同的页面中重复使用;也可以将复杂的页面拆分成多个低耦合的模块,有助于代码维护。自定义组件在使用时与基础组件非常相似。
创建自定义组件 类似于页面,一个自定义组件由 jsonwxmlwxssjs 4个文件组成。要编写一个自定义组件,首先需要在 json 文件中进行自定义组件声明(将 component 字段设为 true 可将这一组文件设为自定义组件):
{ "component": true }同时,还要在 wxml 文件中编写组件模板,在 wxss 文件中加入组件样式,它们的写法与页面的写法类似。具体细节和注意事项参见 组件模板和样式 。
承载网页的容器。会自动铺满整个小程序页面,个人类型的小程序暂不支持使用
文档:
https://developers.weixin.qq.com/miniprogram/dev/api/payment/wx.requestPayment.htmlAPI:wx.requestPayment(Object object)
wx.requestPayment({ timeStamp: , nonceStr: , package: , signType: MD5, paySign: , success (res) { }, fail (res) { } })小程序直接 this 、 data 的属性是不可以同步到视图的,必须调用:
小程序:
Page({ data: { items: [] }, onLoad: function(options) { this.setData({ items: [1,2,3] } ) } })Vue:
new Vue({ data: { items: [] }, mounted () { this.items = [1, 2, 3] } })优势:
1、无需下载,通过搜索和扫一扫就可以打开 2、良好的用户体验:打开速度快 3、开发成本要比 App 要低 4、安卓上可以添加到桌面,与原生 App 差不多 5、为用户提供良好的安全保障。小程序的发布,微信拥有一套严格的审查流程,不能通过审查的小程序是无法发布到线上的
劣势:
1、限制较多。页面大小不能超过 1M。不能打开超过 5 个层级的页面 2、样式单一。小程序的部分组件已经是成型的了,样式不可以修改。例如:幻灯片、导航 3、推广面窄,不能分享朋友圈,只能通过分享给朋友,附近小程序推广。其中附近小程序也受到微信的限制 4、依托于微信,无法开发后台管理功能
**条是 运行环境的不同,传统的 HTML5 的运行环境是浏览器;而微信小程序的运行环境并非完整的浏览器,是微信开发团队基于浏览器内核完全重构的一个内置解析器,针对小程序专门做了优化,配合自己定义的开发语言标准,提升了小程序的性能
第二条是 开发成本的不同,只在微信中运行,所以不用再去顾虑浏览器兼容性,不用担心生产环境中出现不可预料的奇妙 BUG
第三条是 获取系统级权限的不同,系统级权限都可以和微信小程序无缝衔接
第四条便是 应用在生产环境的运行流畅度,长久以来,当 HTML5 应用面对复杂的业务逻辑或者丰富的页面交互时,它的体验总是不尽人意,需要不断的对项目优化来提升用户体验。
但是由于微信小程序运行环境独立
相同点:首先他们都是作为点击事件函数,就是点击时触发。在这个作用上他们是一样的,可以不做区分
不同点:他们的不同点主要是 bindtap 是不会阻止冒泡事件的,catchtap 是阻止冒泡的
wx.navigateTo(): 保留当前页面,跳转到应用内的某个页面。但是不能跳到 tabbar 页面 wx.redirectTo(): 关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面 wx.switchTab(): 跳转到 abBar 页面,并关闭其他所有非 tabBar 页面 wx.navigateBack(): 关闭当前页面,返回上一页面或多级页面。可通过 getCurrentPages() 获取当前的页面栈,决定需要返回几层 wx.reLaunch(): 关闭所有页面,打开到应用内的某个页面
小程序除了拥有公众号的低开发成本、低获客成本低以及无需下载等优势,在服务请求延时与用户使用体验是都得到了较大幅度的提升,使得其能够承载跟复杂的服务功能以及使用户获得更好的用户体验
小程序支持大部分 ES6 语法,在返回成功的回调里面处理逻辑或者使用 Promise
下载 weUI、导入文件夹到 app.js同级目录下、在 app.wxss 里面引入 weui.wxss、在需要引入 weUI 插件样式的页面的 json 文件中引入、 然后就可以在对应页面的 wxml 中直接使用该组件
文档:
https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxss.htmlWXSS
WXSS (WeiXin Style Sheets)是一套样式语言,用于描述 WXML 的组件样式。
WXSS 用来决定 WXML 的组件应该怎么显示。
为了适应广大的前端开发者,WXSS 具有 CSS 大部分特性。同时为了更适合开发微信小程序,WXSS 对 CSS 进行了扩充以及修改。
与 CSS 相比,WXSS 扩展的特性有: - 尺寸单位 - 样式导入
尺寸单位
rpx(responsive pixel): 可以根据屏幕宽度进行自适应。规定屏幕宽为750rpx。 如在 iPhone6 上,屏幕宽度为375px,共有750个物理像素,则750rpx = 375px = 750物理像素,1rpx = 0.5px = 1物理像素。
JavaScript 文件中声明的变量和函数只在该文件中有效;
不同的文件中可以声明相同名字的变量和函数,不会互相影响
通过全局函数 getApp 可以获取全局的应用实例,如果需要全局的数据可以在 App() 中设置
选择器 目前支持的选择器有:
选择器
样例
样例描述
.class
.intro
选择所有拥有 class="intro" 的组件
#id
#firstname
选择拥有 id="firstname" 的组件
element
view
选择所有 view 组件
element, element
view, checkbox
选择所有文档的 view 组件和所有的 checkbox 组件
::after
view::after
在 view 组件后边插入内容
::before
view::before
在 view 组件前边插入内容
全局样式与局部样式 定义在 app.wxss中的样式为全局样式,作用于每一个页面。 在 page 的 wxss 文件中定义的样式为局部样式,只作用在对应的页面,并会覆盖 app.wxss 中相同的选择器。
view、swiper、scroll-view、text、button、input、image 等
image 组件中二维码/小程序码图片不支持长按识别。仅在 wx.previewImage 中支持长按识别示例代码
微信小程序的 setNavigationBarTitle 方法可以实现 title 的动态配置,这个方法可以写在 onLoad 里面或者 onSHow 里面 title 可以调接口动态获取、也可以在上一个页面 url 传参这个页面接收
placeholder-style 和 placeholder-class 就是微信小程序里用来给 placeholder 设置样式的属性
使用 wx.getUserInfo 方法 withCredentials 为 true 时可获取 encryptedData ,里面有 UnionID 。后端需要进行对称解密
微信支付支持在公众平台注册并完成微信认证的小程序接入支付功能。小程序接入支付后,可以通过小程序支付产品来完成在小程序内销售商品或内容时的收款需求。具体申请流程,可以直接根据注册流程提供相关信息即可
微信官方文档--slot:
组件模板和样式: 类似于页面,自定义组件拥有自己的 wxml 模板和 wxss 样式。
组件模板:组件模板的写法与页面模板相同。组件模板与组件数据结合后生成的节点树,将被插入到组件的引用位置上。在组件模板中可以提供一个 <slot> 节点,用于承载组件引用时提供的子节点。
代码示例:
<!-- 组件模板 --> <view class="wrapper"> <view> 这里是组件的内部节点 </view> <slot></slot> </view> <!-- 引用组件的页面模板 --> <view> <component-tag-name> <!-- 这部分内容将被放置在组件 <slot> 的位置上--> <view> 这里是插入到组件 slot 中的内容 </view> </component-tag-name> </view>注意,在模板中引用到的自定义组件及其对应的节点名需要在 json 文件中显式定义,否则会被当作一个无意义的节点。除此以外,节点名也可以被声明为抽象节点。
主要是通过书写 css3 动画样式实现
使用 web-view 可以嵌入需要跳转的网页,但是这个需要企业账号以及放置验证文件到网站根目录,另外就是在网页中利用微信提供的 js 文件,调用微信小程序的跳转方法即可
wx.checkJsApi 接口检查
本部分操作涉及到原生 app 的技术栈,一般不由前端完成,具体实现步骤如下:下载微信SDK、根据文档手动集成 SDK、编写对接小程序代码
首先开启页面分享功能,然后在 App.onLaunch() 跟 App.onShow() 中编写页面逻辑,通过分享之后的回传参数获取
微信客户端 6.6.0,基础库 1.7.3 及以上版本开始支持。开发者工具请使用 1.01.1712150 及以上版本。
某些情况下,开发者需要将小程序划分成不同的子包,在构建时打包成不同的分包,用户在使用时按需进行加载。
在构建小程序分包项目时,构建会输出一个或多个分包。每个使用分包小程序必定含有一个主包。所谓的主包,即放置默认启动页面/TabBar 页面,以及一些所有分包都需用到公共资源/JS 脚本;而分包则是根据开发者的配置进行划分。
在小程序启动时,默认会下载主包并启动主包内页面,当用户进入分包内某个页面时,客户端会把对应分包下载下来,下载完成后再进行展示。
目前小程序分包大小有以下限制:
整个小程序所有分包大小不超过 20M 单个分包/主包大小不能超过 2M 对小程序进行分包,可以优化小程序首次启动的下载时间,以及在多团队共同开发时可以更好的解耦协作。
点击官方文档——分包加载了解
<web-view/>网页中可使用 JSSDK 提供的接口返回小程序页面。 例如: wx.miniProgram、 navigateTo({url: /path/to/page})
用 view 代替 scroll-view ,设置 onPullDownRefresh 函数实现
1、在 json 文件中配置 enablePullDownRefresh 为 true ( app.json 中在 window 中设置 enablePullDownRefresh ) 2、在 js 文件中实现 onPullDownRefresh 方法,在网络请求完成后调用 wx.stopPullDownRefresh() 来结束下拉刷新
1、数据的大小有限制,超过范围会直接导致整个小程序崩溃,除非重启小程序;
2、小程序不可以直接渲染文章内容页这类型的 html 文本内容,若需显示要借助插件,但插件渲染会导致页面加载变慢,所以最好在后台对文章内容的 html 进行过滤,后台直接处理批量替换 p 标签、div 标签为 view 标签,然后其它的标签让插件来做,减轻前端的时间