当前位置: 首页 > article >正文

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

前言

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

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

一、模板和组件

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内存管理

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

相关文章:

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

前言 近期萌生了一些想法&#xff0c;感觉可以做一个小程序作为产出。 但小程序做得比较少&#xff0c;因此边做边复习。整理和总结了一些高频知识点和大家一起分享。 一、模板和组件 1.1模板&#xff08;Template&#xff09; 优势 简单灵活&#xff1a;模板定义和使用都较…...

vue中js简单创建一个事件中心/中间件/eventBus

vue中js简单创建一个事件中心/中间件/eventBus 目录结构如下&#xff1a; eventBus.js class eventBus {constructor() {this.events {};}// 监听事件on(event, callback) {if (!this.events[event]) {this.events[event] [];}this.events[event].push(callback);}// 发射…...

01. Linux嵌入式系统学习笔记(一)

一. linux基础操作指令 1. 新建文件和目录 (1) 新建文件 touch 命令&#xff1a;用于创建空文件。 touch filename.txt 如果文件已存在&#xff0c;touch 会更新文件的访问时间和修改时间。 (2) 新建目录 mkdir 命令&#xff1a;用于创建目录。 mkdir directoryname 使…...

【从零开始学习计算机科学】软件测试(十)嵌入式系统测试、游戏开发与测试过程、移动应用软件测试 与 云应用软件测试

【从零开始学习计算机科学】软件测试(十)嵌入式系统测试、游戏开发与测试过程、移动应用软件测试 与 云应用软件测试 嵌入式系统测试测试策略及测试流程嵌入式软件测试问题及测试方法嵌入式软件的测试流程游戏开发与测试过程游戏开发与通用软件的开发过程区别游戏测试主要内容…...

# [RPA] 使用八爪鱼进行高效网页数据采集

在许多行业中&#xff0c;数据是核心资产。然而&#xff0c;虽然许多网站的文本内容可以免费访问&#xff0c;但手动一条一条采集&#xff0c;不仅耗时耗力&#xff0c;还容易出错。这种情况下&#xff0c;使用自动化工具来提高采集效率就显得尤为重要。本文将介绍 八爪鱼 这一…...

K8S学习之基础三十七:prometheus监控node资源

Prometheus v2.2.1 ​ 编写yaml文件&#xff0c;包含创建ns、configmap、deployment、service # 创建monitoring空间 vi prometheus-ns.yaml apiVersion: v1 kind: Namespace metadata:name: monitor-sa# 创建SA并绑定权限 kubectl create serviceaccount monitor -n monito…...

#mapreduce打包#maven:could not resolve dependencies for project

打包报错&#xff1a; #报错信息&#xff1a; [ERROR] Failed to execute goal on project mapreduce_teacher1: Could not resolve dependencies for project org.example:mapreduce_teacher1:jar:1.0-SNAPSHOT: Failed to collect dependencies at org.apache.hive:hive-exe…...

QT软件匠心开发,塑造卓越设计服务

在当今这个数字化飞速发展的时代&#xff0c;软件已经成为我们生活中不可或缺的一部分。而QT&#xff0c;作为一款跨平台的C图形用户界面应用程序开发框架&#xff0c;凭借其强大的功能和灵活性&#xff0c;在众多软件开发工具中脱颖而出。我们深知&#xff0c;在软件开发领域&…...

田间机器人幼苗视觉检测与护苗施肥装置研究(大纲)

田间机器人幼苗视觉检测与护苗施肥装置研究 基于多光谱视觉与精准施肥的农业机器人系统设计 第一章 绪论 1.1 研究背景与意义 农业智能化需求&#xff1a; 传统幼苗检测依赖人工&#xff0c;效率低且易遗漏弱苗/病苗施肥不精准导致资源浪费和环境污染 技术挑战&#xff1a;…...

生物化学笔记:医学免疫学原理 免疫系统的组成与功能+克隆选择学说

免疫系统的组成与功能 克隆选择学说 克隆选择学说&#xff08;Clonal Selection Theory&#xff09;是免疫学的核心理论之一&#xff0c;由 麦克法兰伯内特&#xff08;Frank Macfarlane Burnet&#xff09; 在 1957 年提出&#xff0c;用于解释特异性免疫反应的机制。 基本概…...

Android 15 获取网络切片信息的标准接口

相关术语 简称全称中文说明URSPUE Route Selection Policy用户路由选择策略URSP 是 5G 核心网(PCF)下发给 UE 的策略,用于指导应用流量如何路由到不同的网络切片或 PDU 会话。其包含多个规则,每条规则由 优先级、业务描述符(Traffic Descriptor) 和 路由选择描述符(Rout…...

MySql创建分区表并且按月分区

前言 在mysql中&#xff0c;按月份分区&#xff0c;再使用分区字段时间来查询数据将会很快&#xff0c;因为这样只需要扫描指定的分区。因此&#xff0c;在处理大量数据时&#xff0c;使用分区表是一个非常好的选择。 1、创建表&#xff0c;并使用RANGE COLUMNS分区 按创建时间…...

招聘面试季--一文顿悟,Java中字节流和字符流的区别及使用场景上的差异

‌一、核心区别‌ ‌特性‌‌字节流‌‌字符流‌‌数据单位‌以字节&#xff08;8-bit&#xff09;为单位处理数据&#xff08;如0xA1&#xff09;以字符&#xff08;16-bit Unicode&#xff09;为单位处理数据&#xff08;如A, 你&#xff09;‌基类‌InputStream / OutputSt…...

使用【docker】+【shell】脚本半自动化部署微服务项目

一.前言 以下是一个基于 ‌Docker Shell脚本‌ 的半自动化部署方案&#xff0c;包含镜像构建、容器管理、网络配置和日志监控等核心功能&#xff0c;适用于大多数Web应用或微服务项目。 二‌.目录结构 三.脚本代码实现 1.‌Shell脚本实现 (deploy.sh) #!/bin/bash# 设置颜…...

uni-app——计时器和界面交互API

API 基本概要 概念说明 API&#xff08;应用程序接口&#xff09;是预先定义的方法集合&#xff0c;用于实现特定功能。在 uni-app 中&#xff0c;通过全局对象 uni 调用 API&#xff0c;例如 uni.getSystemInfoSync 获取设备信息。 API 分类与调用规则 事件监听型 以 on 开…...

使用 GitHub 可重用工作流和 GitHub Actions 简化 DevOps

在当今的 DevOps 环境中&#xff0c;自动化是开发团队能够更快地交付功能并维护高质量代码库的关键。这就是像 GitHub Actions 这样的工具变得不可或缺的地方&#xff0c;因为它能够直接在存储库中自动化、自定义和执行 GitHub 工作流程。 当然&#xff0c;随着项目的规模和存…...

深入理解MySQL日志机制

目录 1. MySQL日志概述 2. 错误日志&#xff08;Error Log&#xff09; 2.1 错误日志的作用 2.2 错误日志的配置 2.3 查看错误日志 3. 二进制日志&#xff08;Binary Log&#xff09; 3.1 二进制日志的作用 3.2 二进制日志的配置 3.3 查看二进制日志 3.4 二进制日志的…...

Sql Server 索引性能优化 分析以及分表

定位需优化语句 根据工具 skywking 或者开启慢查询日志 找到 慢sql 的语句根据 执行过程 来 判断 慢的原因 row filter 指标 看查了多少数据 比例多少 type 看下是单表 还是 join联表 比如 执行步骤多 没索引 优化方向 减少执行次数索引 没索引考虑加索引 加索引 尽量选择 i…...

vue使用element-ui自定义样式思路分享【实操】

前言 在使用第三方组件时&#xff0c;有时候组件提供的默认样式不满足我们的实际需求&#xff0c;需要对默认样式进行调整&#xff0c;这就需要用到样式穿透。本篇文章以vue3使用element-ui的Tabs组件&#xff0c;对Tabs组件的添加按钮样式进行客制化为例。 确定需要修改的组…...

2020年全国职业院校技能大赛改革试点赛高职组“云计算”竞赛赛卷第二场次题目:容器云平台部署与运维

2020年全国职业院校技能大赛改革试点赛高职组 “云计算”竞赛赛卷 第二场次题目:容器云平台部署与运维 说明:本任务提供有2台服务器master和node,都安装了centos7.5操作系统,在/opt/centos目录下有CentOS-7-x86_64-DVD-1804系统光盘文件所有文件,在/opt/containerk8s目…...

PowerBI 条形图,解决数据标签在条形内部看不清的问题

比如下面的条形图&#xff1a; 最上面两行&#xff0c;数据标签显示在了条形内部&#xff0c;哪怕设置了值为黑色 字体也会自动切换为白色&#xff0c;如果设计要求条形的颜色是浅色&#xff0c;就会导致数据看不清晰。 解决方法一&#xff1a; 将数据标签位置设置为端外 效果…...

下载与快速上手 NVM:Node.js 版本管理工具

一、准备工作&#xff1a;卸载旧版 Node.js 重要提示&#xff1a;在安装 NVM 前&#xff0c;请先彻底删除已安装的 Node.js&#xff0c;避免路径冲突&#xff1a; 检查安装路径 bash where node常见路径&#xff1a; C:\Program Files\nodejs\C:\Users\用户名\AppData\Local\n…...

网络防火墙(Firewall)、Web防火墙(WAF)、入侵检测系统(IDS)、入侵防御系统(IPS)对比总结

目录 一、Firewall、WAF、IDS、IPS四种设备简介 二、Firewall、WAF、IDS、IPS四种设备的角色定位 三、防火墙&#xff08;Firewall&#xff09;与入侵检测系统&#xff08;IPS&#xff09;的区别 四、入侵检测系统&#xff08;IDS&#xff09;与入侵防御系统&#xff08;IP…...

Unity | 游戏数据配置

目录 一、ScriptableObject 1.创建ScriptableObject 2.创建asset资源 3.asset资源的读取与保存 二、Excel转JSON 1.Excel格式 2.导表工具 (1)处理A格式Excel (2)处理B格式Excel 三、解析Json文件 1.读取test.json文件 四、相关插件 在游戏开发中,策划…...

IT工具 | node.js 进程管理工具 PM2 大升级!支持 Bun.js

P(rocess)M(anager)2 是一个 node.js 下的进程管理器&#xff0c;内置负载均衡&#xff0c;支持应用自动重启&#xff0c;常用于生产环境运行 node.js 应用&#xff0c;非常好用&#x1f44d; &#x1f33c;概述 2025-03-15日&#xff0c;PM2发布最新版本v6.0.5&#xff0c;这…...

VulnHub-Web-Machine-N7通关攻略

一、信息收集 第一步&#xff1a;确定靶机IP为192.168.0.107 第二步&#xff1a;扫描后台及开放端口 第三步&#xff1a;进行敏感目录及文件扫描 http://192.168.0.107/index.html (CODE:200|SIZE:1620) http://192.168.0.107/server-status (CODE:403|SIZ…...

发现一个好用的Vue.js内置组件

目录 一、这个好用的内置组件是什么&#xff1f; 二、这个组件的主要功能 三、怎么使用&#xff1f; 四、使用注意事项 五、我的使用场景 一、这个好用的内置组件是什么&#xff1f; 今天在优化我的平台应用时&#xff0c;发现一个好用的组件标签--<keep-alive>。 …...

论华为 Pura X 折叠屏性能检测

在科技浪潮中&#xff0c;折叠屏手机以其创新形态掀起市场热潮。华为 Pura X 作为华为最新折叠手机&#xff0c;承载前沿科技与精湛工艺&#xff0c;成为行业焦点。它融合先进折叠屏技术与优质材质&#xff0c;致力于打破传统手机使用边界&#xff0c;为用户开启全新体验。但产…...

生成PDF文件:从html2canvas和jsPdf渲染到Puppeteer矢量图

刚刚实现而已&#xff1a;第一次明白&#xff0c;双击或file:///打开html文件&#xff0c;居然和从localhost:3000打开同一个html文件有本质的区别。 字体居然还能以Base64代码嵌入到网页&#xff0c;只是太大太笨。 需要安装node.js&#xff0c;npm安装更多依赖&#xff1a;…...

在 Elasticsearch 中探索基于 NVIDIA 的 GPU 加速向量搜索

作者&#xff1a;来自 Elastic Chris Hegarty 及 Hemant Malik 由 NVIDIA cuVS 提供支持&#xff0c;此次合作旨在为开发者在 Elasticsearch 中的向量搜索提供 GPU 加速。 在 Elastic Engineering 组织内&#xff0c;我们一直致力于优化向量数据库的性能。我们的使命是让 Lucen…...