微信小程序笔记

微信小程序笔记

文件构成

全局文件

  1. app.json

小程序全局配置文件,必要,自动生成

  1. app.js

小程序入口JS文件,一般只需申明全局变量、处理生命周期以及版本升级即可,必要

  1. app.wxss

小程序全局CSS样式文件,非必要

  1. app.wxml

小程序全局HTNL文件,非必要

页面文件

[page]为页面自定义名称,可随意,但建议具有语义性的命名

  1. [page].json

页面配置文件

  1. [page].js

页面JS文件,一般实现具体的逻辑处理、网络请求等

  1. [page].wxss

页面CSS样式文件

  1. [page].wxml

页面HTNL文件

基本原理

小程序分为两个部分 webview 和 appService 。其中webview主要用来展现UI,appService有来处理业务逻辑、数据及接口调用。

App()是小程序唯一实例,页面中可通过getApp()获取该实例,而Page()是页面实例。

// app.js
globalData: {
    name: 'zzz'
}
// page.js
const name = getApp().globalData.name

生命周期

onLoad——页面加载,调一次,可在参数内获取跳转URL传递的参数

onShow——页面显示,每次打开/切入前台时页面都调用

onReady——初次渲染完成,调一次

onHide——页面隐藏/切入后台,当navigateTo或底部tab切换时调用

onUnload——页面卸载,当redirectTo或navigateBack时调用

graph LR
onLoad页面加载-->onShow页面显示
onShow页面显示-->onReady页面渲染
onReady页面渲染-->onHide页面隐藏/后台
onHide页面隐藏/后台-->onUnload页面卸载

基础语法

数据更新

小程序内数据更新必须使用setData函数异步更新

this.setData({
    key: value
}, [function])
// 参数二为可选参数,接受一个函数作为异步更新数据的回调

数据获取

数据获取直接使用对象链即可

const name = this.data.name

数据绑定

插值表达式

{{ name }}

数据遍历

wx:for

wx:for="{{ array }}" wx:key="id"
// 默认:当前项item,索引index
{{ item.id }} - {{ index }}

// 可选参数
wx:for-item="myItem" wx:for-index="myIndex"
{{ myItem.id }} - {{ myIndex }}

条件

wx:if

wx:else

const isShow = true

wx:if={{ false }}
wx:else={{ isShow }}
...

跳转

内部跳转

  1. wx.navigateTo

保留当前页面,跳转到应用内的某个页面。但是不能跳到 tabbar 页面(参数必须为字符串)

wx.navigateTo({
    url: /pages/welcome/index?name=${name}
})
  1. wx.redirectTo

关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面

wx.redirectTo({
    url: /pages/welcome/index?name=${name}
})
  1. wx.switchTab

跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面,路径后不能带参数

wx.switchTab({
    url: '/pages/index/index'
})
  1. wx.navigateBack

关闭当前页面,返回上一页面或多级页面。可通过 getCurrentPages() 获取当前的页面栈,决定需要返回几层

wx.navigateBack({
    detal: 1
})
  1. wx.reLaunch

关闭所有页面,打开到应用内的某个页面

wx.reLaunch({
    url: '/pages/index/index'
})

WXML标签,跳转任意页面,可添加属性实现跳转其他小程序

// page.wxml

// 跳转小程序

详细参数建议阅读 “navigator|微信开放文档”

跳转外部小程序

  1. wx.navigateToMiniProgram

打开另一个小程序

wx.reLaunch({
    appId: '12345678',
    extraData: {} // 跳转参数
})

详细参数建议阅读 “wx.navigateToMiniProgram|微信开放文档”

  1. wx.navigateBackMiniProgram

返回上一个小程序

wx.reLaunch({
    extraData: {} // 返回参数
})

跳转内嵌H5

web-view

承载网页的容器,每个页面只能有一个 web-view,会自动铺满整个页面,并覆盖其他组件。

跳转至web-view页面并赋值src属性即可

// webview.wxml

// webview.js
page({
    onLoad() {
        this.setData({ src: 'http://xxxxx' })
    }
})

详细内容建议阅读 “web-view|微信开放文档”(重要)

通信

函数传参

小程序函数传递参数语法区别于Vue,不能直接使用bindtap=”handle(item)”,需要使用 data- 属性绑定参数

注意:参数名不支持大写,不支持驼峰命名,例如 userName –转换–> username

// page.wxml
 // 1
 // 2
// 多参数

// page.js
handle(e) {
    const item = e.currentTarget.dataset.item // 1: item
    const name = e.currentTarget.dataset.username // 2: zzz
}

跳转传参

跳转页面path上直接拼接参数即可

wx.navigateTo({
    url: '/pages/welcome/index?name=zzz'
})

// welcom/index.js
onLoad(options) {
    const name = options.name   // zzz
}

与内嵌H5通信

小程序 –> H5

与跳转传参一致,url后拼接参数即可

// webview.js
page({
    onLoad() {
        this.setData({ src: 'http://xxxxx.com?data=xxx' })
    }
})
H5 –> 小程序

需要先引入wxsdk

// 1.npm下载sdk,weixin-js-sdk是非官方npm包,官方并未维护微信sdk的npm包
npm i weixin-js-sdk
import wxsdk from 'weixin-js-sdk'

// 2.直接下载官方jssdk到本地
// 需要做些处理,将jssdk文件内第一个this改为window,然后在文件最后加上 export default wxsdk
import wxsdk from './lib/jweixin-1.3.2'

1.与跳转传参一致,url后拼接参数即可

wxsdk.miniProgram.navigateTo({
    url: '/pages/index/index?data=111'
})

2.postMessage

// 官方api,但局限性大,只能在特定情况(小程序后退、组件销毁、分享)才会触发
wxsdk.miniProgram.navigateBack()
wxsdk.miniProgram.postMessage({
    data: {
        // 参数写在data里
        key: value
    }
})

未完待续…

Original: https://www.cnblogs.com/zh1q1/p/15243016.html
Author: 吴知木
Title: 微信小程序笔记

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/599568/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 聊天软件的后端架构NIO

    聊天软件等的技术,朋友圈,钉钉,微博分两种技术模式:1.读扩散:也就是拉模式消息会存储到自己的发件箱里面,然后让每个上线的人去拉取未读消息,缺点是每次都要去好多底线去拉取数据,读操…

    数据库 2023年6月16日
    0135
  • 【黄啊码】MySQL入门—1、SQL 的执行流程

    大家好!我是黄啊码,鉴于大家对于学习的热情,从今天起,将连载mysql的相关知识,需要学习的可以注意我的更新学习,后期估计会开启付费专栏,但当前完全可以白嫖,希望大家珍惜! 首先我…

    数据库 2023年6月16日
    079
  • Java8Stream流

    Stream流呢,以前我也有所了解,像一些面试题中也出现过,Java8的新特性,有一块就是这个Stream操作集合,而且在看一些项目中也使用的比较多。但总感觉自己学的一知半解,所以…

    数据库 2023年6月11日
    077
  • mysql数据备份与恢复之mysqldump和source命令

    use database source dbname.sql 1.导出一个数据库的结构 mysqldump -d dbname -uroot -p > dbname.sql …

    数据库 2023年5月24日
    070
  • 猴子吃桃(递归)

    递归案例实践分析 猴子偷桃 题目描述: 猴子第一天摘下若干桃子,当即吃了一半,觉得好吃不过瘾,于是又多吃了一个,,第二天又吃了前天剩余桃子数量的一半,觉得好不过瘾,于是又多吃了一个…

    数据库 2023年6月16日
    0156
  • mysql的安装和下载

    1、 MySQL 下载地址为: MySQL 下载,这里下载的是mysql的msi安装文件,选择下面的470.2M的版本,点击download进行下载。 2、在下载页面直接选择: N…

    数据库 2023年5月24日
    087
  • SSM简单整合!!!

    3. 在maven中添加依赖 org.mybatis mybatis-spring 2.0.7 org.springframework spring-jdbc 5.3.2 org….

    数据库 2023年6月16日
    080
  • 7、解决swagger测试接口报错:TypeError: Failed to execute ‘fetch‘ on ‘Window‘: Request with GET/HEAD method cannot have body

    一、Swagger报错: 1、报错类型: TypeError: Failed to execute ‘fetch’ on ‘Window&#82…

    数据库 2023年6月6日
    077
  • MySQL第1章——数据库概述

    数据库概述 为什么要使用数据库 什么是数据持久化? 数据持久化就是把数据保存到可掉电式存储设备中供以后使用。大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘…

    数据库 2023年6月14日
    075
  • 深度干货!一篇Paper带您读懂HTAP | StoneDB学术分享会第①期

    在最新一届国际数据库顶级会议 ACM SIGMOD 2022 上,来自清华大学的李国良和张超两位老师发表了一篇论文:《HTAP Database: What is New and …

    数据库 2023年6月11日
    083
  • 读取资源文件的几种常用方法

    资源文件的读取方法: 本地读取资源文件 undefined2. 服务器(Tomcat)通过ServletContext获取: ServletContext servletConte…

    数据库 2023年6月16日
    091
  • 工程师成长阶段感悟

    从 2013 年陆续开始做软件研发工作, 去过不少公司, 做过一些类型项目, 桌面开发, web 开发, 手游开发, 端游开发, 棋牌, 视频云服务, 电商. 刚毕业那会在国企, …

    数据库 2023年6月9日
    095
  • Java List分批处理

    工作中经常遇到分批处理的问题,比如将一个List列表中的数据分批次保存至数据库中。如果列表中数据条目很大,比如1000万条以上,mysql中 max_allowed_packet …

    数据库 2023年6月14日
    098
  • Java学习-第一部分-第二阶段-第二节:枚举和注释

    自定义类实现枚举 先看一个需求 要求创建季节(Season)对象,请设计并完成。 创建Season对象有如下特点 1.季节的值是有限的几个值(spring, summer, aut…

    数据库 2023年6月11日
    089
  • MySQL中varchar(1)的解读(辟谣)

    MySQL中varchar(1)的解读(辟谣) 网上有如下错误解读: 在mysql中, varchar(n)和char(n)表示n个字符。不管是中文还是英文,MySQL都可以存储n…

    数据库 2023年6月14日
    0114
  • SQL语句的整合

    基础语法 https://blog.csdn.net/m0_37989980/article/details/103413942 CRUD 提供给数据库管理员的基本操作,CRUD(…

    数据库 2023年6月14日
    074
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球