微信小程序学习者必用笔记

news2024/12/24 2:31:58

1、全局配置

  • 1.1  window节点常用配置


  • 1.2  tabBar 

注意:它是与 window 和 page 同级的

  • 1.2.1  tabBar的6个组成部分

  • 1.2.2  tabBar的结点配置项

  • 1.2.3  每个tab项的配置选项 


  • 1.3  局部配置

2、新建小程序页面

3、常用组件标签

  • 3.1  view:相当于 div 


  • 3.2  scroll-view:可视区滚动

scroll-y 属性:允许纵向滚动

scroll-x 属性:允许横向滚动

注意:使用竖向滚动,必须给 scroll-view 一个固定高度


  • 3.3  swiper:轮播图组件

属性类型默认值作用
indicator-dotsbooleanfalse是否显示面板指示点
indicator-colorcolorrgba(0, 0, 0, .3)指示点颜色
indicator-active-colorcolor#000000当前选中的指示点颜色
autoplayboolean false 是否自动切换
intervalnumber 5000自动切换时间间隔
circularbooleanfalse 是否采用衔接滑动


  • 3.4  text:文本组件,相当于 span

1、selectable(已废弃):支持长按选中

2、user-select:支持长按选中

\n只在<text>标签中生效


  • 3.5  rich-text:富文本组件

把使用 node 节点 ,把HTML结构渲染为ui结构


  • 3.6  button:按钮


  • 3.7  image:图片标签

  1. 有默认宽度:300px    高度:240px     [就算里面没有图片,还是占有位置]
  2. mode属性:指定图片 裁剪 和 缩放模式

 4、宿主环境-api

5、语法

  • 5.1  插值语法

注意:1、动态绑定内容跟vue中一样

           2、动态绑定属性不需要v-bind绑定,是直接绑定

 


  • 5.2  wx:if:条件渲染 


  • 5.3  hidden:控制元素是否隐藏


  •  5.4  wx:for:列表渲染

  • 5.4.1  手动指定索引名字和循环项名字

  • 5.4.2  wx:key:列表渲染使用唯一key 

注意:这里的wx:key="",里面是没{{}}

6、常用的事件绑定


  •  6.1  bindtap:点击事件


  • 6.2  修改data中数据(this.setData)

直接修改this.data,而不调用this.setData(),是无法改变当前页面的状态的,会导致数据不一致


  • 6.3  事件传参

  • 6.3.1  不能正常工作

  • 6.3.2  正确的方法


  • 6.4  bindinput:文本框输入事件

注意,微信小程序没有双向绑定,只能通过 e.deatil.value 获取文本框最新的值,通过 this.setData 去改变 data 中的值

7、wxss模板语法

  • 7.1  rpx 单位

 rpx是微信小程序独有,解决屏幕适配的尺寸单位


  •  7.2  @import的语法结构

 8、数据请求  -  GET和POST请求


  • 8.1  发起 GET 请求


  • 8.2  发起 POST 请求


  • 8.3  在页面刚加载时请求数据


  • 8.4  跳过 request 合法域名校验


  • 8.5  关于 跨域 和 Ajax 的说明

9、页面导航

  • 9.1  浏览器与小程序导航区别 

  • 9.1.1  浏览器的页面导航

  • 9.1.2  微信小程序的页面导航 


  • 9.2  声明式导航

  • 9.2.1  导航到 tabBar 页面 

  • 9.2.2  导航到 非tabBar 页面

  • 9.2.3  后退导航 


  • 9.3  编程式导航

  • 9.3.1  导航到 tabBar 页面 

  • 9.3.2  导航到 非tabBar 页面

  • 9.3.3  后退导航 


  • 9.4  导航传参

  • 9.4.1  声明式导航传参

  • 9.4.2  编程式导航传参

  • 9.4.3  查看跳转后携带的参数


  • 9.5  在 onLoad 中接受导航传参

一般会通过 this.setData() 把带过来的 参数 存储到 data 中

10、页面事件

  • 10.1  下拉刷新事件

  • 10.1.1  关闭下拉刷新

 实际真机不会自动关闭下拉刷新,需要我们去调用一个函数关闭下拉刷新效果

  1. 在 getshoplist 中设置参数 cb 函数,而这个 cb 函数只有 下拉刷新事件传递,所以下拉触底中是不会触发 关闭下拉刷新动作的函数
  2. 一旦触发下拉刷新事件,先重置关键数据,重新发起请求,并传递一个 关闭下拉动作的函数
  3. 在 getshopList 函数中的 complete 函数中判断 是否存在 cb 函数,存在就执行,即关闭下拉刷新动作


  • 10.2  上拉触底事件

  •  10.2.1  添加Loading提示效果

wx.showLoading(Object object) | 微信开放文档 (qq.com)

  • 10.2.2  添加节流

  1. 在 data 声明 isLoading:false;
  2. 在请求函数 getshopList 最前面设置 this.setData({ isLoading:true })
  3. 在请求函数 getshopList 的 complete 函数中设置 this.setData({ isLoading:false})
  4. 在上拉触底函数最前面设置 if (this.data.isLoading) return;
  5. 【即在请求时,上拉触底事件不触发,请求完成后,再上拉触发】

  • 10.2.3  判断是否还有下一页数据

        有时候数据库所有数据都请求了,如果还在上拉触底,可能会请求空数据,所以需要判断是否还有下一页数据,没有就不请求了

  • 10.2.4  使用 wx.shopToast() 提示数据加载完毕

11、生命周期函数


  •  11.1  应用的生命周期函数


  •  11.2  页面生命周期函数

动态设置标题内容 - wx.setNavigationBarTitle 只能在 onReady 中使用

12、WXS 脚本

1、WXS (WeiXin Script)是小程序独有的一套脚本语言,结合 WXML,可以构建出页面的结构
2、wxml中无法调用在页面的 js 中定义的函数,但是,wxml中可以调用 wxs 中定义的函数。因此,小程序中wxs的典型应用场景就是“过滤器”


  • 12.1  内嵌的wxs脚本


  • 12.2  定义并使用外联的WXS脚本

  • 12.2.1  定义外联的WXS脚本

注意:在node 里面可以 直接写 { toLower } 简写形式,但是在wxs里面,必须写全 { toLower toLower }

  • 12.2.2  使用外联的WXS脚本


  • 12.3  WXS的特点

  • 12.3.1  不能作为组件的时间回调函数

  • 12.3.2  隔离性

13、自定义组件

  • 13.1  自定义组件的创建和引用 

  • 13.1.1  组件的创建 

  • 13.1.2  组件的引用 

组件的引用方式分为“局部引用”和“全局引用,顾名思义:

  1. 局部引用:组件只能在当前被引用的页面内使用
  2. 全局引用:组件可以在每个小程序页面中使用
  • 13.1.2.1  局部引用

  • 13.1.2.2  全局引用

  • 13.1.3  组件和页面的区别


  • 13.2  组件的样式

  • 13.2.1  组件样式隔离 

  • 13.2.2  组件样式隔离注意点

  • 13.2.3  修改组件的样式隔离选项


  • 13.3  组件的数据、方法、属性

  • 13.3.1  组件的数据、方法 

  1. data数据和页面的差不多 
  2. methods节点放置所有事件处理函数和自定义方法、自定义方法是在 js 中声明并使用的,没有在标签中绑定

  • 13.3.2  properties属性

  • 13.3.3  data 和 properties 的区别

  • 13.3.4  使用 setData 修改 properties 的值


  • 13.4  数据监听器

  • 13.4.1  监听对象所有属性的变化


  • 13.5  纯数据字段

  • 13.5.1  使用规则


  •  13.6  组件的生命周期函数 

  • 13.6.1  组件主要的生命周期函数

  • 13.6.2  lifetimes 节点

  • 13.6.3  组件所在页面的生命周期函数

  • 13.6.4  pageLifetimes 节点 


  • 13.7  插槽

一个组件在复用的时候,可能我们要求的页面结构会有一些细微改动,所以我们需要在组件设置一个插槽,在页面wxml中,传递不同内容到该页面中,从而实现组件复用 

  • 13.7.1  单个插槽

  • 13.7.2  启动并使用多个插槽 


  • 13.8  父子组件之间的通信

  •  13.8.1  属性绑定

  • 13.8.2  事件绑定

  • 13.8.3  获取组件实例


  •  13.9  自定义组件的 behaviors

  1. behaviors 是小程序中,用于实现组件间代码共享的特性,类似于Vue.js 中的“mixins”

  2. 每个 behavior 可以包含一组属性、数据、生命周期函数和方法。组件引用它时,它的属性、数据和方法会被合并到组件中

  3. 每个组件可以引用多个 behavior , behavior 也可以引用 behavior 。

  • 13.9.1  创建并引用 behavior

  • 13.9.2  behavior 中所有可用的节点

  • 13.9.3  同名字段的覆盖和组合规则

具体链接:behaviors | 微信开放文档 (qq.com)

14、使用 npm 包


  • 14.1  使用 Vant Weapp 组件库

官网链接:快速上手 - Vant Weapp (youzan.github.io) 

注意:下面的终端是在根目录右键最后一项打开的

  1. npm init -y                    下载包管理文件
  2. npm i @vant/weapp@1.3.3 -S -production        下载vant weapp组件库 

  • 14.1.1  使用css变量定制vant主题样式

也就是改变 vant weapp 组件库,例如 按钮 等等组件的默认样式,当然是改变该根节点所有该组件的样式,也称为定制主题,注意:不是改变单个的,是改变所有

不知道 怎么使用css变量 的,看:(2条消息) 使用 CSS 自定义属性_打不着的大喇叭的博客-CSDN博客

注意:

  1. 下面的 page 是根节点,就是在 调试器 中,包裹最外面的样式标签的节点是 <page></page> 
  2. 自定义css变量的名称,必须以 -- 开头,而在 vant weapp 组件库,改变默认样式的名称给好了,自定义css变量的名称需要去 :vant自定义css变量名称 里面找,找到后,把 @ 换成 -- 开头就行
  3. 在自定义组件中使用需要开启下面选项 

  • 14.1.2  API Promise化

  • 14.1.2.1  下载并使用

原因:右侧 miniprogram_npm 这个文件夹在npm下载某个包后,并不会马上就有需要的包内容,需要构建 npm ,下载的包在 node_modules上,为了防止构建后,包出问题,所以要先删除 miniprogram_npm 文件夹,再点击 工具 ,选择 构建npm

  • 14.1.2.2  用promise化后发请求的例子

 15、全局数据共享

 安装MobX相关包:npm install --save mobx-miniprogram@4.13.2 mobx-miniprogram-bindings@1.2.1


  • 15.1  创建 MobX 的 Store 实例


  • 15.2  将 store 成员绑定到页面身上

通过 createStoreBindings 将 store 上的 需要的fields数据 和 需要的action 的函数 绑定到 页面的this上

注意:这里 fields 和 actions 指向一个数组,跟绑定到 组件 不一样


  • 15.3  将 store 成员绑定到组件身上

注意:这里 fields 和 actions 指向一个对象,跟绑定到 页面 不一样

16、分包

  • 16.1  基本概念 

  • 16.1.1.1  什么是分包?  

        分包指的是把一个完整的小程序项目,按照需求划分为不同的子包,在构建时打包成不同的分包,用户在使用时按需进行加载

  • 16.1.1.2  分包的好处

  1. 可以优化小程序首次启动的下载时间
  2. 在多团队共同开发时可以更好的解耦协作
  • 16.1.1.3  分包的加载规则 

  • 16.1.1.4  分包的体积限制 

  1. 整个小程序所有分包大小不超过 16M (主包 +所有分包)
  2. 单个分包/主包大小不能超过 2M
  • 16.1.2  分包前的项目构成

  • 16.1.2  分包后的项目构成


  • 16.2  使用分包

  • 16.2.1  配置方法 

  • 16.2.2  打包原则

  • 16.2.3  引用原则


  • 16.3  独立分包

  • 16.3.1.1  什么是独立分包?  

        用不一般不能通过分包打开小程序,而通过独立分包却能打开小程序 

  • 16.3.1.2  普通分包和独立分包的区别

       最主要的区别: 是否依赖于主包才能运行

  1. 普通分包必须依赖于主包才能运行
  2. 独立分包可以在不下载主包的情况下,独立运行
  • 16.3.1.3  独立分包的应用场景 

开发者可以按需,将某些具有一定功能独立性的页面配置到独立分包中。原因如下:

  1. 当小程序从普通的分包页面启动时,需要首先下载主包
  2. 而独立分包不依赖主包即可运行,可以很大程度上提升分包页面的启动速度

注意:  一个小程序中可以有多个独立分包。 

  • 16.3.1.4  引用原则 

  • 16.3.2  配置方法 


  • 16.4  分包的预下载

  •  16.4.1.1  什么是分包的预下载

        分包的预下载指的是:  在进入小程序的某个页面时,由框架自动预下载可能需要的分包,从而提升进入后续分包页面时的启动速度。

  • 16.4.1.2  分包的预下载限制

  • 16.4.2  配置分包的预下载

17、自定义tabBar栏 

因为配置在json里面的tabBar栏,有时候需求不够,还需要设置徽标或者其他的效果,所以有了自定义tabBar,我们配合着Vant Weapp写,完美! 

  • 17.1.1  配置信息

  1. 在 app.json 中的 tabBar 项指定 custom 字段,同时其余 tabBar 相关配置也补充完整。
  2. 所有 tab 页的 json 里需声明 usingComponents 项,也可以在 app.json 全局开启。

  

  • 17.1.2  在根目录上添加入口文件

  • 17.1.3  编写tabBar逻辑 

我们这里直接使用 Vant Weapp 【我笔记上面有安装步骤了,不清楚,看上面】,网址:Tabbar 标签栏 - Vant Weapp (youzan.github.io)

按照vant网址上面的配置方法,把代码复制加入 custom-tab-bar 文件夹下面的文件中 ,下面这个是一个简单的例子

  • 17.1.4  导航跳转配置

注意:实现下面这一步,还不行,因为点击一次,跳转,但是图片未显示选中的图片,需要点击两次才能实现该有效果

  • 17.1.5  修改tabBar栏当前图片的Bug

如果放tabbar组件里,每次进行页面跳转的时候,data中的active都会清零,所以要放到store里,删掉data中的active,把 active 存在仓库里面

  • 17.1.6  修改当前选中的文字颜色

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/832040.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

sqlyog导出mysql数据字典

1.打开sqlyog执行sql获取字典数据 SELECTt.COLUMN_NAME AS 字段名,t.COLUMN_TYPE AS 数据类型,CASE IFNULL(t.COLUMN_DEFAULT,Null) WHEN THEN 空字符串 WHEN Null THEN NULL ELSE t.COLUMN_DEFAULT END AS 默认值,CASE t.IS_NULLABLE WHEN YES THEN 是 ELSE 否 END AS 是否…

HTML+CSS+JavaScript:全选与反选案例

一、需求 1、单击全选按钮&#xff0c;下面三个复选框自动选中&#xff0c;再次单击全选按钮&#xff0c;下面三个复选框自动取消选中 2、当下面三个复选框全都选中时&#xff0c;全选按钮自动选中&#xff0c;下面三个复选框至少有一个未选中&#xff0c;全选按钮自动取消选…

Docker安装RabbitMQ镜像

步骤1&#xff1a;拉取镜像 docker pull rabbitmq:management 步骤2&#xff1a;运行 docker run -d –-name rabbit -e RABBITMQ_DEFAULT_USERadmin -e RABBITMQ_DEFAULT_PASSadmin -p 15672:15672 -p 5672:5672 -p 25672:25672 -p 61613:61613 -p 1883:1883 rabbitmq:mana…

OpenCV中图像变换

一、介绍 transform()&#xff1a;Transposes a matrix. perspectiveTransform()&#xff1a;Performs the perspective matrix transformation of vectors. warpAffine()&#xff1a;Applies an affine transformation to an image. warpPerspective()&#xff1a;Applies a p…

python中等号要空格吗,python中等号和双等号

这篇文章主要介绍了python中等号两边自动添加空格操作&#xff0c;具有一定借鉴价值&#xff0c;需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获&#xff0c;下面让小编带着大家一起了解一下。 学习python时&#xff0c;注释的时候有下划线&#xff0c;波浪线&#x…

react ant icon的简单使用

refer: 快速上手 - Ant Design 1.引入ant npm install antd --save 2.在页面引用&#xff1a; import { StarOutlined } from ant-design/icons; 如果想要引入多个icon&#xff0c;可以这样书写&#xff1a; import { UserOutlined, MailOutlined, PieChartOutlined } fr…

智慧~经典开源项目数字孪生智慧商场——开源工程及源码

深圳南山某商场的工程和源码免费赠送&#xff0c;助您打造智慧商场。立即获取&#xff0c;提升商场管理效能&#xff01; 项目介绍 凤凰商场作为南山地区的繁华商业中心&#xff0c;提供多样化的购物和娱乐体验。通过此项目&#xff0c;凤凰商场将迈向更智能的商业模式。 本项目…

【2023 华数杯全国大学生数学建模竞赛】 C题 母亲身心健康对婴儿成长的影响 Python代码实现

【2023 华数杯全国大学生数学建模竞赛】 C题 母亲身心健康对婴儿成长的影响 1 题目 母亲是婴儿生命中最重要的人之一&#xff0c;她不仅为婴儿提供营养物质和身体保护&#xff0c; 还为婴儿提供情感支持和安全感。母亲心理健康状态的不良状况&#xff0c;如抑郁、焦虑、压力等…

Stable Diffusion教程(8) - X/Y/Z 图表使用

1. 介绍 这项功能可以在 文生图/图生图 界面的左下角种 “脚本” 一栏内选择 “X/Y/Z 图表” 以启用。 它创建具有不同参数的图像网格。使用 X 类型和 Y 类型字段选择应由行和列共享的参数&#xff0c;并将这些参数以逗号分隔输入 X 值 / Y 值字段。支持整数、浮点数和范围。…

【辨析】投影到高维空间 VS 嵌入到高维空间

虽然"投影到高维空间"和"嵌入到高维空间"都涉及将数据映射到高维空间&#xff0c;但它们在深度学习和机器学习领域中有着不同的含义和应用。 投影到高维空间&#xff08;Project to High-Dimensional Space&#xff09;&#xff1a; 投影是指将低维空间中…

三种方式创建对象的几种方式及new实例化时做了什么?

创建对象的几种方式 利用对象字面量创建对象 const obj {}2.利用 new Object创建对象 const obj new Object()3.使用 构造函数实例化对象 function Fn(name) {this.name name} const obj new Fn(张三) console.log(obj.name); //张三为什么要用构造函数的形式&#xff1…

基于STM32F103C8T6的温湿度控制系统(从PCB制作到成品展示)

很久就想写一篇入门级的硬件项目流程介绍&#xff0c;最近终于有了机会&#xff0c;接下来会从PCB设计到成品展示&#xff0c;一步一步地记录&#xff0c;如果对你有帮助&#xff0c;那便是最好。大白话记录我的整个开发流程&#xff0c;有点无聊&#xff0c;各位看官多多担待。…

POLARDB -- Ausitndatabases 历年的文章集合

开头还是介绍一下群&#xff0c;如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题&#xff0c;有需求都可以加群群内有各大数据库行业大咖&#xff0c;CTO&#xff0c;可以解决你的问题。加群请联系 liuaustin3 &#xff0c;在新加的朋友会分到2群&#xff08;共…

模糊照片怎么修复清晰?教你轻松修复照片清晰度

照片记录着我们生活中的美好瞬间&#xff0c;然而&#xff0c;由于拍摄时手抖或对焦不准等原因&#xff0c;我们常常会遇到模糊的照片。你们通常都会怎么处理这些照片呢&#xff1f;是直接删掉吗&#xff1f;其实我们可以不用删掉&#xff0c;只需要使用一些图修复工具来修复这…

操作系统启动后网络还需要比较慢的时间才启动(差不多二分钟)

环境 linux 4.14.61 systemd version 247.3 问题 启动时发现网络其实很快就起来了&#xff0c;但是mqtt和docker启动的很慢&#xff0c;导致相关依赖启动很慢。 问题分析 实际通过systemctl list-units发现systemd-networkd-wait-online启动失败 而且从字面上看也有延时…

VB6中FSO具体应用详解

文前申明:原文为通用版实例代码,本菜鸟在每例之后加入一个简单的实例(均验证通过),供有需要的朋友参考. 您正在看的VB教程是:VB入门基础认识VB的文件系统对象FSO。 在 VB 编程中经常需要和文件系统打交道&#xff0c;比如获取硬盘的剩余空间、判断文件夹或文件是否存在等。在…

【JDK 11】【JDK 8】项目 jdk 版本升级,修改方案与实践

前言 工作中&#xff0c;难免会遇到升级版本的事情。这次由于两个系统中&#xff0c;系统 A 是用的 JDK8 版本&#xff0c;系统 B 是用 JDK11 版本&#xff1b;要求同步 JDK 版本&#xff0c;也就是升级到11版本。那么接下来将进行介绍~ 问题与解决 1. .sh 脚本启动无法启动…

状态模式——对象状态及其转换

1、简介 1.1、概述 在软件系统中&#xff0c;有些对象也像水一样具有多种状态&#xff0c;这些状态在某些情况下能够相互转换&#xff0c;而且对象在不同的状态下也将具有不同的行为。为了更好地对这些具有多种状态的对象进行设计&#xff0c;可以使用一种被称为状态模式的设…

SAS-数据集SQL水平合并

一、SQL水平合并基本语法 sql的合并有两步&#xff0c;step1&#xff1a;进行笛卡尔乘积运算&#xff0c;第一个表的每一行合并第二个表的每一行&#xff0c;即表a有3行&#xff0c;表b有3行&#xff0c;则合并后3*39行。笛卡尔过程包含源数据的所有列&#xff0c;相同列名会合…