整理和总结微信小程序的高频知识点

前言

近期萌生了一些想法,感觉可以做一个小程序作为产出。

但小程序做得比较少,因此边做边复习。整理和总结了一些高频知识点和大家一起分享。

一、模板和组件

1.1模板(Template)

优势
  • 简单灵活:模板定义和使用都较为简单,只需在 WXML 文件里定义好模板结构,然后在需要的地方引入并传入数据就行。不涉及复杂的生命周期管理和样式隔离等问题,使用起来更灵活。
  • 轻量级复用:适合简单的代码片段复用,能快速实现页面中重复部分的展示,不会引入过多额外代码和复杂度。
  • 数据传递直观:模板的数据传递通过属性绑定实现,数据流向清晰,易于理解和维护。
适用场景
  • 简单重复结构:当页面中有多处相似的简单结构,像商品列表中的单个商品展示、评论列表中的单条评论等,使用模板能快速复用这些结构。
  • 快速原型开发:在项目前期快速搭建页面原型时,模板可帮助开发者迅速复用代码,加快开发进度。

1.2组件(Component)

优势
  • 高度封装:组件将结构、样式和逻辑封装在一起,具有良好的独立性和复用性。可以在不同页面甚至不同项目中复用,减少代码冗余。
  • 生命周期管理:组件拥有自己的生命周期函数,如 createdattachedready 等,能方便地在不同阶段执行特定操作,比如数据初始化、事件绑定等。
  • 样式隔离:组件的样式默认是隔离的,不会影响到其他组件或页面,避免了样式冲突问题,提高了代码的可维护性。
  • 事件系统完善:组件有自己独立的事件系统,可自定义事件并在组件内外进行传递和处理,方便实现复杂的交互逻辑。
适用场景
  • 复杂交互模块:对于具有复杂交互逻辑和功能的模块,如弹窗、轮播图、下拉刷新等,使用组件可以更好地管理代码和状态。
  • 团队协作开发:在多人协作开发项目中,组件可以将不同功能模块进行拆分,每个开发者负责不同的组件开发,提高开发效率和代码质量。
  • 可维护性要求高的项目:当项目规模较大、需要长期维护时,使用组件可以使代码结构更加清晰,便于后续的修改和扩展。

1.3区别总结

  • 封装程度:模板只是简单的代码片段复用,封装程度较低;组件则是高度封装的代码单元,包含结构、样式和逻辑。
  • 数据和样式隔离:模板没有数据和样式隔离,使用时可能会受外部环境影响;组件默认有样式隔离,数据和逻辑也相对独立。
  • 复杂度:模板使用简单,适合简单场景;组件相对复杂,需要处理生命周期、事件等,但能应对复杂需求。

 1.4示例代码

模板使用

定义模板

<!-- template.wxml -->
<template name="itemTemplate"><view><text>{{itemName}}</text><text>{{itemPrice}}</text></view>
</template>

使用模板

<!-- index.wxml -->
<import src="template.wxml" />
<template is="itemTemplate" data="{{itemName: '苹果', itemPrice: 5.0}}" />
组件使用

定义组件

// item-component.js
Component({properties: {itemName: String,itemPrice: Number},data: {// 组件内部数据},methods: {// 组件方法}
})
<!-- item-component.wxml -->
<view><text>{{itemName}}</text><text>{{itemPrice}}</text>
</view>
/* item-component.wxss */
view {border: 1px solid #ccc;
}

使用组件

<!-- index.wxml -->
<item-component itemName="苹果" itemPrice="5.0" />

比如我这里定义了一个contentScroll组件 

在index.html中使用该组件之前,需要在index.json中引用该组件

 

二、路由与导航

2.1路由

一个地图导航系统,知道每个页面的位置以及如何到达。在小程序中,路由负责管理页面之间的关系以及页面的加载/卸载等操作。页面都有路由路径,通过路径可以找到页面。 

注意:页面栈最多只能有十层!!!

2.2导航

用户在小程序中进行页面切换的操作过程和方式 

导航方式
  • wx.navigateTo
    用于打开一个新的页面,并将当前页面入栈。比如,你在一个商品列表页面,点击某个商品进入详情页,就可以使用 wx.navigateTo。它会把商品列表页留在页面栈中,当你在详情页点击返回按钮时,就能回到商品列表页。
  • wx.redirectTo
    这种方式会关闭当前页面,然后打开一个新的页面。例如,当用户完成一个订单支付流程后,从支付结果页面跳转到订单详情页面,使用 wx.redirectTo 可以避免用户通过返回按钮回到支付结果页面,保证页面流程的合理性。
  • wx.switchTab
    用于切换到 tabBar 页面
    wx.switchTab 只能用于跳转到在 app.json 文件中配置好的 tabBar 页面,否则会报错。开发中要注意不要将其用于跳转到非 tabBar 页面的场景。
    • 页面重新加载
      每次使用 wx.switchTab 切换到一个 tabBar 页面时,该页面的 onLoad 函数会被重新调用。如果页面有一些初始化操作在 onLoad 中,可能会导致一些不必要的重复加载。可以将一些不依赖于页面切换的初始化操作放在 onShow 函数中,以避免重复执行。
  • wx.navigateBack
    用于返回上一个页面。可以指定返回的页面层数,如果不指定,默认返回上一级页面。
    • 自定义返回层数
      `wx.navigateBack({
      delta: this.data.backDelta,
      success() {
      console.log('成功返回指定层数');
      },
      fail(err) {
      console.error('返回失败:', err);
      }
      });`

三、性能优化

3.1包体积优化

分包加载

配置app.json

在 app.json 中添加 subPackages 字段来配置分包信息。

页面跳转:

在代码中使用 wx.navigateTo 或其他导航方式跳转到分包页面时,小程序会自动下载对应的分包。

图片压缩

<image src="/images/placeholder.png" mode="aspectFit" bindload="onImageLoad">
onImageLoad() { // 图片加载完成后,替换为真实图片 this.setData({ imageUrl: this.data.realImageUrl }); }

代码分包

简单理解就是分包目录中有定义,然后在需要使用改组件的页面进行引入使用,
这里涉及“配置”“引用”

//配置
app.json中subPackages的components的设置


//引用组件页面的json
"usingComponents": { "custom-component": "/subPackages/componentPackage/components/customComponent/customComponent" }

//使用
<custom-component text="这是从页面传递的文本"></custom-component>

3.2渲染优化

  • 减少wx:for嵌套
  • 使用virtual-list优化长列表

3.3内存管理

及时销毁定时器、取消未完成的请求

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

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

相关文章

1996-2023年各省公路里程数据(无缺失)

1996-2023年各省公路里程数据&#xff08;无缺失&#xff09; 1、时间&#xff1a;1996-2023年 2、来源&#xff1a;国家统计局、统计年鉴 3、指标&#xff1a;公路里程&#xff08;万公里&#xff09; 4、范围&#xff1a;31省 5、指标解释&#xff1a;公路里程指报告期末…

SEARCH-R1:大型语言模型的多轮搜索推理革命

当AI学会"边搜索边思考" 2025年&#xff0c;语言模型领域迎来重大突破——SEARCH-R1框架通过强化学习&#xff08;RL&#xff09;让大模型实现"动态搜索自主推理"的协同进化。这项技术不仅让模型在回答"泰坦尼克号沉没时的船长是谁"时能自动检索…

Wi-Fi NAN 架构(Wi-Fi Aware Specification v4.0,第2章:2.7~2.9)

1. NAN 介质访问控制层&#xff08;MAC&#xff09; NAN MAC负责通过参与 NAN同步信标帧&#xff08;NAN Synchronization Beacon frame&#xff09;的传输&#xff0c;获取并维护设备所在的NAN集群的同步。作为同步功能的一部分&#xff0c;NAN MAC运行 TSF 定时器。NAN MAC还…

基于物联网的便携式土壤综合参数检测仪设计

标题:基于物联网的便携式土壤综合参数检测仪设计 内容:1.摘要 随着农业现代化和环境监测需求的不断增长&#xff0c;对土壤综合参数的实时、准确检测变得至关重要。本研究旨在设计一种基于物联网的便携式土壤综合参数检测仪&#xff0c;以满足现场快速检测和数据远程传输的需求…

《Android 13深度定制:手势拦截技术实现SystemUI状态栏智能折叠方案》

核心机制解析 在Android 13的SystemUI定制中&#xff0c;状态栏下拉行为由NotificationPanelViewController控制&#xff0c;其核心逻辑聚焦于手势事件处理和布局动态调整。当用户执行下拉操作时&#xff0c;系统通过onQsIntercept方法拦截滑动事件&#xff0c;并调用setQsExp…

《Python实战进阶》No26: CI/CD 流水线:GitHub Actions 与 Jenkins 集成

No26: CI/CD 流水线&#xff1a;GitHub Actions 与 Jenkins 集成 摘要 持续集成&#xff08;CI&#xff09;和持续部署&#xff08;CD&#xff09;是现代软件开发中不可或缺的实践&#xff0c;能够显著提升开发效率、减少错误并加速交付流程。本文将探讨如何利用 GitHub Actio…

2025.3.22总结

今天去了光谷书店&#xff0c;看了下&#xff0c;书店里女生比较多&#xff0c;也不知道是不是上班族&#xff0c;发现有本类似马克思的书籍&#xff0c;也不知道是不是再考研或者考其他证书的。 图书馆很安静&#xff0c;安静的让我的内心也平静了下来&#xff0c;我也再一旁…

HR人员和组织信息同步AD域服务器实战方法JAVA

HR人员和组织信息同步AD域服务器 前期准备AD域基础知识整理HR同步AD的逻辑代码结构配置文件设置启动类HR组织的BeanHR人员Bean获取HR人员和组织信息的类AD中处理组织和人员的类日志配置 POM.xml文件生成EXE文件服务器定时任务异常问题注意事项 前期准备 1、开发语言&#xff1…

修改服务器windows远程桌面默认端口号

修改服务器windows远程桌面默认端口号 在Windows服务器上修改远程桌面协议&#xff08;RDP&#xff09;的默认端口&#xff08;3389&#xff09;可以增强服务器的安全性&#xff0c;减少被恶意扫描和攻击的风险。以下是修改远程端口的详细步骤&#xff1a; 按 Win R 打开运行…

MuJoCo 仿真 Panda 机械臂!末端位置实时追踪 + 可视化(含缩放交互)

视频讲解&#xff1a; MuJoCo 仿真 Panda 机械臂&#xff01;末端位置实时追踪 可视化&#xff08;含缩放交互&#xff09; 仓库地址&#xff1a;GitHub - LitchiCheng/mujoco-learning 本期介绍下&#xff0c;mujoco_py这个库很老了&#xff0c;最新的版本可以通过mujoco的p…

vue-splice方法

一、代码解析 语法结构 splice(index, deleteCount, newElement) 是 JavaScript 数组的变异方法&#xff0c;其参数含义为&#xff1a; • index&#xff1a;操作的起始位置&#xff08;索引&#xff09;。 • 1&#xff1a;删除的元素数量&#xff08;此处删除 1 个元素&#…

在Mac M1/M2芯片上完美安装DeepCTR库:避坑指南与实战验证

让推荐算法在Apple Silicon上全速运行 概述 作为推荐系统领域的最经常用的明星库&#xff0c;DeepCTR集成了CTR预估、多任务学习等前沿模型实现。但在Apple Silicon架构的Mac设备上&#xff0c;安装过程常因ARM架构适配、依赖库版本冲突等问题受阻。本文通过20次环境搭建实测…

spring boot 拦截器

1、创建ServletConfig配置类 package com.pn.config;import com.pn.filter.LoginFilter; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.web.servlet.Fil…

论文阅读笔记:Denoising Diffusion Probabilistic Models (2)

接论文阅读笔记&#xff1a;Denoising Diffusion Probabilistic Models (1) 3、论文推理过程 扩散模型的流程如下图所示&#xff0c;可以看出 q ( x 0 , 1 , 2 ⋯ , T − 1 , T ) q(x^{0,1,2\cdots ,T-1, T}) q(x0,1,2⋯,T−1,T)为正向加噪音过程&#xff0c; p ( x 0 , 1 , …

【大模型基础_毛玉仁】3.5 Prompt相关应用

目录 3.5 相关应用3.5.1 基于大语言模型的Agent3.5.2 数据合成3.5.3 Text-to-SQL3.5.4 GPTs 3.5 相关应用 Prompt工程应用广泛&#xff0c;能提升大语言模型处理基础及复杂任务的能力&#xff0c;在构建Agent、数据合成、Text-to-SQL转换和设计个性化GPTs等方面不可或缺。 . …

Deepseek训练成AI图片生成机器人

目录 内容安全层 语义理解层 提示词工程层 图像生成层 交付系统 训练好的指令(复制就可以) 内容安全层 理论支撑:基于深度语义理解的混合过滤系统 敏感词检测:采用BERT+CRF混合模型,建立三级敏感词库(显性/隐性/文化禁忌),通过注意力机制捕捉上下文关联风险 伦…

深入理解 Linux ALSA 音频架构:从入门到驱动开发

文章目录 一、什么是 ALSA?二、ALSA 系统架构全景图核心组件详解:三、用户空间开发实战1. PCM 音频流操作流程2. 高级配置(asound.conf)四、内核驱动开发指南1. 驱动初始化模板2. DMA 缓冲区管理五、高级主题1. 插件系统原理2. 调试技巧3. 实时音频优化六、现代 ALSA 发展七…

探秘海螺 AI 视频与计算机视觉算法的奇妙融合

目录 开篇&#xff1a;数字浪潮下的视频新变革 蓝耘 Maas 平台与海螺 AI 视频&#xff1a;崭露头角的视频创作利器 图片生成视频&#xff1a;化静为动的魔法 文本生成视频&#xff1a;文字到画面的奇妙转换 注册与登录 计算机视觉算法&#xff1a;海螺 AI 视频的核心驱动力…

SOFABoot-10-聊一聊 sofatboot 的十个问题

前言 大家好&#xff0c;我是老马。 sofastack 其实出来很久了&#xff0c;第一次应该是在 2022 年左右开始关注&#xff0c;但是一直没有深入研究。 最近想学习一下 SOFA 对于生态的设计和思考。 sofaboot 系列 SOFABoot-00-sofaboot 概览 SOFABoot-01-蚂蚁金服开源的 s…

【数据分享】我国乡镇(街道)行政区划数据(免费获取/Shp格式)

行政区划边界矢量数据是我们在各项研究中最常用的数据。之前我们分享过2024年我国省市县行政区划矢量数据&#xff08;可查看之前的文章获悉详情&#xff09;&#xff0c;很多小伙伴拿到数据后咨询有没有精细到乡镇&#xff08;街道&#xff09;的行政区划矢量数据&#xff01;…