微信小程序笔记

文件构成

全局文件

  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 url='/pages/index/index'>
// 跳转小程序
<navigator targe="miniProgram" app-id="123456789">

详细参数建议阅读 “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属性即可

// page.wxml
<web-view src="{{url}}"></web-view>

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


传参

函数传参

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

// page.wxml
<view bindtap="handle" data-item="item">
// 多参数
<view bindtap="handle" data-item="{{ {item1, item2} }}">
<view bindtap="handle" data-item="{{ [item1, item2] }}">
// page.js
handle(e) {
const item = e.currentTarget.dataset.item
}

跳转传参

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

wx.navigateTo({
url: '/pages/welcome/index?name=zzz'
}) // welcom/index.js
onLoad(options) {
const name = options.name // zzz
}

未完待续

原文-有道云笔记链接

微信小程序基础知识笔记的更多相关文章

  1. 微信小程序基础知识

    一.基本目录结构 app.js 定义app入口 app.json 定义页面配置 index.js 页面中的事件和监听 index.wxml 定义布局文件 1.app.json配置基本信息 { “pag ...

  2. 微信小程序基础

    前言 什么是微信小程序,它是一种轻量级的APP,它与常规App来说,无需下载安装即可使用,它嵌于微信App中,要使用微信小程序你只需要搜索一下微信小程序的名称就好,如近期的"Google的画 ...

  3. 微信小程序基础入门

    准备 Demo 项目地址 https://github.com/zce/weapp-demo Clone or Download(需准备GIT环境) $ cd path/to/project/root ...

  4. 微信小程序内训笔记

    2016年9月22日凌晨微信官方正式宣布“小程序”开始内测,有“微信之父”之称.腾讯集团高级执行副总裁张小龙在2016年末对外宣布“小程序“应用将于2017年1月9日正式推出 这一次微信还是按照惯例, ...

  5. 微信小程序基础之开源项目库汇总

    awesome-github-wechat-weapp 是由OpenDigg整理并维护的微信小程序开源项目库集合.我们会定期同步OpenDigg上的项目到这里,也欢迎各位提交项目给我们. (链接:ht ...

  6. 一个C#程序员学习微信小程序路由的笔记

    路由大家应该都知道,在微信小程序也是有的,毕竟它是单页面应用程序.在WeChat中有五种跳转方式,分别是wx.switchTab.wx.reLaunch.wx.redirectTo.wx.naviga ...

  7. 微信小程序基础之在微信上显示和体验小程序?

    随着小程序正式上线,用户现在可以通过二维码.搜索等方式体验到开发者们开发的小程序了. 用户只要将微信更新至最新版本,体验过小程序后,便可在发现页面看到小程序TAB,但微信并不会通过这个地方向用户推荐小 ...

  8. 微信小程序基础之交互操作控件

    好久没有写关于微信小程序的文章了,今天简单的发表一篇,内容比较简单,包括:ActionSheet上拉菜单.AlertAction提示框.SuccessAction完成框.LoadingAction加载 ...

  9. 微信小程序基础之input输入框控件

    今天主要详写一下微信小程序中的Input输入框控件,输入框在程序中是最常见的,登录,注册,获取搜索框中的内容等等都需要,同时,还需要设置不同样式的输入框,今天的代码中都要相应的使用. input输入框 ...

随机推荐

  1. artDialog 简单几种用法

    $('#btn1').click(function(){        artDialog({title:'图片查看', content:'<img width="817" ...

  2. #使用C#winform编写渗透测试工具--子域名挖掘

    使用C#winform编写渗透测试工具--子域名挖掘 这篇文章主要介绍使用C#winform编写渗透测试工具--子域名挖掘.在渗透测试中,子域名的收集十分重要,通常一个网站的主站的防御能力特别强,而他 ...

  3. String,String Builder,String Buffer-源码

    目录 String 源码分析 常用的API isEmpty() length() charAt() substring() equals() equals()与"==" inter ...

  4. 2021陕西省大学生网络安全技能大赛 Web ez_checkin

    web ez_checkin 进去看了一会,啥也没找到,直接上dirsearch 扫到一个index.php~,打开看一看,是php审计 <?php error_reporting(0); in ...

  5. OpenFaaS实战之六:of-watchdog(为性能而生)

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  6. 剑指 Offer 32 - II. 从上到下打印二叉树 II

    剑指 Offer 32 - II. 从上到下打印二叉树 II 从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行. 例如: 给定二叉树: [3,9,20,null,null,1 ...

  7. 2010 NOIP提高组题解

    机器翻译 用队列模拟题意即可 #include<cstdio> #include<iostream> #include<cstring> using namespa ...

  8. Cell Reports | 上海瑞金医院糜坚青等揭示组蛋白酰化/乙酰化修饰比率调控BRD4基因组分布

    ​ 景杰生物 | 报道 组蛋白翻译后修饰,被认为构成一类超越基因序列的"组蛋白密码",控制着遗传信息的组织层次及其在染色质层面的解读.组蛋白赖氨酸乙酰化是研究最早的一类组蛋白修饰, ...

  9. 简单的整合 shiro + SpringMVC 例子

    简单的整合shiro和springmvc的例子 想要整合Shiro和springmvc,在网上找了很多例子,感觉都有一点复杂.所以就自己写了一个最简单整合项目,记录在这里以备后面查看. 这个例子包含如 ...

  10. flink clickhouse-jdbc和flink-connector 写入数据到clickhouse因为jar包冲突导致的60 seconds.Please check if the requested resources are available in the YARN cluster和Could not resolve ResourceManager address akka报错血案

    一.问题现象,使用flink on yarn 模式,写入数据到clickhouse,但是在yarn 集群充足的情况下一直报:Deployment took more than 60 seconds. ...