微信小程序知识总结及案例集锦

微信小程序的发展会和微信公众号一样,在某个时间点爆发

学习路径

  1. 微信小程序最好的教程肯定是官方的文档啦,点击这里直达 微信官方文档

  2. 认真跟着文档看一遍,相信有vue前端经验的看下应该就能上手了,然后安装 微信小程序开发者工具

  3. 新建一个quick start项目,了解代码结构,这里附上整个quick start代码

  4. 然后就拿个顺手的api练练手,这里附上cnode代码,跟着做完差不多就算入门了。

  5. 入门之后就是看其他项目的实现了,这里会附上案例集锦,一些github的案例。

知识总结

tip:看到了另一份W3CSchool整理的文档,可以结合官方文档一起看

目录结构介绍

  • app.js — 对本页面的窗口表现进行配置。
  • app.json — 对微信小程序进行全局配置,决定页面文件的路径、窗口表现、设置网络超时时间、设置多 tab 等。
  • app.wxss — 接受一个数组,每一项都是字符串,来指定小程序由哪些页面组成。

页面生命周期

  1. 小程序注册完成后,加载页面,触发onLoad方法。
  2. 页面载入后触发onShow方法,显示页面。
  3. 首次显示页面,会触发onReady方法,渲染页面元素和样式,一个页面只会调用一次。
  4. 当小程序后台运行或跳转到其他页面时,触发onHide方法。
  5. 当小程序有后台进入到前台运行或重新进入页面时,触发onShow方法。
  6. 当使用重定向方法wx.redirectTo(OBJECT)或关闭当前页返回上一页wx.navigateBack(),触发onUnload

常规页面A:onLoad()-->onShow()-->onReady()-->onHide()-->onUnload()

释义:

  • onLoad():监听页面加载,一个页面只会调用一次
  • onShow():监听页面显示,每次打开页面都会调用一次
  • onReady():监听页面初次渲染完成,一个页面只会调用一次,代表页面加载完毕,视图层和逻辑层可进行交互
  • onHide():监听页面隐藏,当页面被覆盖或进入后台执行
  • onUnload():监听页面卸载,当页面被关闭或内存不足主动销毁页面

wx.navigateTo跳转状态下,页面A和页面B的生命周期逻辑

  1. 进入A页面:A执行onLoad()-->onShow()-->onReady();
  2. A页面navigateTo B页面:A执行onHide(),B执行onLoad()-->onShow()-->onReady();
  3. B页面返回A页面:B执行onUnload(),A执行onReady();
  4. 退出A页面:A执行onUnload()。
Page({
data:{},
onLoad:function(options){
// 页面初始化 options为页面跳转所带来的参数
},
onReady:function(){
// 页面渲染完成
},
onShow:function(){
// 页面显示
},
onHide:function(){
// 页面隐藏
},
onUnload:function(){
// 页面关闭
}
})

组件

  • 基本:view,text
  • 表单:button,input,radio,slider
  • 媒体:image,video,audio,canvas
  • 模态:action-sheet,modal,toast,loading
  • 容器:swiper,scroller
  • 导航:navigator,tabbar

小程序开发踩坑记录

  1. 小程序页面空白

    • css兼容性问webkit内核
    • lineShopId长度太长,字符转数字Number
    • post请求参数加上encodeURIComponent解析字符串
  2. header要设置正确

    • get "content-type":'application/json'
    • post "content-type":'application/x-www-form-urlencoded'
    • content-Type:application/x-www-form-urlencoded,application/json
  3. bind事件绑定不会阻止冒泡事件向上冒泡,catch事件绑定可以阻止冒泡事件向上冒泡

  4. image背景图片地址必须是url或者base64/本地资源无法通过 css 获取 可以使用网络图片,或者 base64,或者使用 标签

  5. 使用竖向滚动时,需要给scroll-view一个固定高度,通过 WXSS 设置 height。如果scroll-view高度设置为100%,则不能触发上拉刷新和下拉加载事件......

  6. App() 小程序注册入口,全局唯一。App()用来注册一个小程序,全局只有一个,全局的数据也可以放到这里面来操作。

    // 注册微信小程序,全局只有一个
    let appConfig = {
    // 小程序生命周期的各个阶段
    onLaunch: function(){},
    onShow: function(){},
    onHide: function(){},
    onError: function(){}, // 自定义函数或者属性
    ...
    };
    App(appConfig); // 在别的地方可以获取这个全局唯一的小程序实例
    const app = getApp();

    小程序并没有提供销毁的方式,所以只有当小程序进入后台一定时间、或者系统资源占用过高的时候,才会被真正的销毁。

  7. Page() 页面注册入口。Page()用来注册一个页面,维护该页面的生命周期以及数据。

    // 注册微信小程序,全局只有一个
    let pageConfig = {
    data: {},
    // 页面生命周期的各个阶段
    onLoad: function(){},
    onShow: function(){},
    onReady: function(){},
    onHide: function(){},
    onUnload: function(){},
    onPullDownRefresh: function(){},
    onReachBottom: function(){},
    onShareAppMessage: function(){}, // 自定义函数或者属性
    ...
    };
    Page(pageConfig); // 获取页面堆栈,表示历史访问过的页面,最后一个元素为当前页面
    const page = getCurrentPages();
  8. {{}} 不能执行方法,只能处理简单的运算如 “+ - * /”,比如遇到遍历list,每个item的金额需要格式化,只能在js里预先格式化好再setData一遍( ╯□╰ )

  9. 数字键盘用 type="digit"

  10. 禁止页面下拉需要设置 "disableScroll": true

案例集锦

tip:从案例里可以看到很多其他小程序实现的方式,多多看代码

更多

持续踩坑中...

后续会进行不断更新,订阅请点watch,收藏请点star,欢迎开issues来提问

微信小程序知识总结及案例集锦的更多相关文章

  1. 微信小程序手势滑动卡片案例

    最近工作中有项目要使用微信小程序技术进行开发,其中一项功能困扰了我很久,卡片滑动动效以及手势识别.经过一番研究和参考,现在把成果展示.记录自己踩到的坑,如果大家有需要,也可以帮助到大家. 效果图: 首 ...

  2. 【原创】微信小程序支付java后台案例(公众号支付同适用)(签名错误问题)

    前言 1.微信小程序支付官方接口文档:[点击查看微信开放平台api开发文档]2.遇到的坑:预支付统一下单签名结果返回[签名错误]失败,建议用官方[签名验证工具]检查签名是否存在问题.3.遇到的坑:签名 ...

  3. 微信小程序知识云开发

    一个小程序最多5个服务类目,一个月可以修改3次类目 小程序侵权投诉的发起与应对 软件著作权作品登记证书 实现小程序支付功能 如何借助官方支付api简单.高效率地实现小程序支付功能 借助小程序云开发实现 ...

  4. 微信小程序wx.previewImage实用案例(交流QQ群:604788754)

    本案例是可以滑动预览多张图片效果.(本案例在本地配置好之后,请扫描二维码到手机滑动预览.在开发者工具上预览,滑动不是很流畅) 图片必须选择远程图片,本地图片无法实现预览. 或是通过wx.chooseI ...

  5. 微信小程序知识集锦

    1.自定义属性/获取属性值 自定义属性: <view bindtap='shopPost' data-myid='item.goods_id' ></view> 获取属性: s ...

  6. 微信小程序 教程及示例

    作者:初雪链接:https://www.zhihu.com/question/50907897/answer/128494332来源:知乎著作权归作者所有,转载请联系作者获得授权.微信小程序正式公测, ...

  7. 这是一篇满载真诚的微信小程序开发干货

    1月9日零点刚过,张小龙与团队正式发布微信小程序.它究竟能在微信8.5亿用户中牵动多少人,现在还很难说.但对于创业者来讲,小程序无疑带来了新契机,以及服务“上帝”们的新方式. 从今天起,只要开发者登录 ...

  8. WordPress版微信小程序安装使用说明

    昨天在群里,有刚刚使用WordPress版微信小程序朋友,在问安装过程中的问题,这些问题是经常被问到,这至少说明两个问题: 1.我开发的程序安装和使用不够简易,无法通过简单的配置就可以使用,特别是如果 ...

  9. 我的微信小程序第三篇(app.json)

    前言 端午节回家了,所以好多天没有更新,只想说还是待在家里舒服呀,妈妈各种做好吃的,小侄子侄女各种粘着我在室外玩,导致我三天下来不仅胖了一圈,还黑了一圈,上班第一天有同事就说我晒黑了,哭~~~,为了防 ...

随机推荐

  1. JS执行事件

    先贴出几个名词: 同步任务: 在主线程上排队执行的任务,只有前一个任务执行完毕,才能执行后一个任务 异步任务:   不进入主线程,而进入"任务队列"的任务,只有任务队列通知主线程, ...

  2. 腾讯云更换yum源

    最近公司使用了云服务器代替了机房的一些服务器,然而选择了腾讯云,个人观点通过比较还是阿里云好了点,可能为了使用腾讯云的一些其他功能吧,书归正文. 由于腾讯的源网站经常挂,在我使用过的一台腾讯云主机的时 ...

  3. XML文件生成——借助JDOM

    import java.io.* ; import org.jdom.* ; import org.jdom.output.* ; public class DOMDemo { public stat ...

  4. java 空指针异常造成的原因有哪些

    实际上 空指针异常   也就是你用了一个没有实际值的对象 1. 某一对象没有被实例化,就拿来使用,如调用此对象的方法,会抛空指针异常. 2. 获取从别的对象传过来的对象为空 3. 数据库查询方面的空指 ...

  5. nginx+tomcat集群负载均衡(实现session复制)

    转自:http://talangniao.iteye.com/blog/341512 架构描述 前端一台nginx服务器做负载均衡器,后端放N台tomcat组成集群处理服务,通过nginx转发到后面( ...

  6. 012一对一 唯一外键关联映射_双向(one-to-one)

    ²  两个对象之间是一对一的关系,如Person-IdCard(人—身份证号) ²  有两种策略可以实现一对一的关联映射 主键关联:即让两个对象具有相同的主键值,以表明它们之间的一一对应的关系:数据库 ...

  7. 实现分布式队列ZooKeeper的实现

    一.背景 有一些时候,多个团队需要共同完成一个任务,比如,A团队将Hadoop集群计算的结果交给B团队继续计算,B完成了自己任务再交给C团队继续做.这就有点像业务系统的工作流一样,一环一环地传下去,直 ...

  8. 数据库连接之SQL JDBC

    数据库连接之SQL JDBC SQlServer的配置: 1).外围配置服务器中将远程连接设置为:同时使用TCP/IP和named pipes 2).点击该连接->属性->安全性-> ...

  9. 使用nodeJS实现前端项目自动化之项目构建和文件合并

    前面的话 一般地,我们使用构建工具来完成项目的自动化操作.本文主要介绍如何使用nodeJS来实现简单的项目结构构建和文件合并 项目构建 假设,最终实现的项目名称为'test',结构如下图所示 那么,首 ...

  10. 设计模式二:MVC

    先附上部分代码: /* *MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式.这种模式用于应用程序的分层开发. *Model(模型) - 模型代表一个存取数据的对 ...