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

微信小程序代码优化3个小技巧

抽取重复样式

样式复用

我们会发现很多时候在开发的过程中会存在多个页面中都用到了同样的样式,那么其实之前有提到过,公用样式可以放在app.wxss里面这样就可以直接复用。

如:flex布局的纵向排列,定义在app.wxss里面

.flex-col{display: flex;flex-direction: column;
}

然后其他页面可以直接使用组合样式:

b7df1202307271734163527.png

通用的写在app.wxss里面,个性化的在具体页面编写。

以上是样式的复用,还有一种是样式中常用的具体属性值设置成变量,便于复用。

属性复用

使用CSS自定义属性(变量)
声明一个自定义属性,属性名需要以两个减号(–)开始,属性值则可以是任何有效的CSS值。

page {--color:#F8D300
}

注意:需要在app.wxss定义,这样所有页面的wxss才能使用。
使用一个局部变量时用 var() 函数包裹以表示一个合法的属性值:

.content-btn {background: var(--color);
}

同样的除了颜色,还有一些统一的边距、大小、等等属性都可以。

抽取重复方法

做过小程序开发的同学应该都知道都知道app.js是可以全局共享的。那么这个时候如果有多个页面都需要用到的方法和属性就可以全部写在app.js里面。
如下所示:

// app.js
App({randomMsg(){let msgs = this.globalData.msgslet msg = msgs[Math.floor(Math.random() * msgs.length)];return msg},globalData: {msgs:["你好吗?","加油鸭!","早点睡!","奥利给!","别熬夜!"]}
})

页面使用方法:

const app = getApp()Page({onLoad: function (options) {console.log(app.globalData)console.log(app.randomMsg())},
})

适用场景:在小程序里面共享都是一次应用生命周期中会有多个页面使用到的数据,小程序重启后将全局变量会重新初始化。

安装第三方包

除了可以提取方法到utils里面达到了便于复用。有时候我们维护常用工具类成本很高,而且我们要去深入去了解里面的API,这个时候我们用别人维护的工具类。

这个时候我们就会去github查找相关的开源库,找到合适的就需要进行使用。使用通常有两种方式:

  1. 直接复制原来到自己的项目中
  2. 使用 npm 包进行远程引用

具体引用可以查看我之前写过的文章:《微信小程序如何引入npm包?》

总结

  1. 无论是 css 样式还是 js 方法都要尽可能的抽象复用,这样才能提升整体效率。
  2. 在优化的过程中先局部再整体,没有最好只有更好,基于业务场景来做优化。
  3. 常用的工具类就不需要重复发明轮子,学会使用已有第三方开源库可提升效率。

 

相关文章:

微信小程序代码优化3个小技巧

抽取重复样式 样式复用 我们会发现很多时候在开发的过程中会存在多个页面中都用到了同样的样式,那么其实之前有提到过,公用样式可以放在app.wxss里面这样就可以直接复用。 如:flex布局的纵向排列,定义在app.wxss里面 .flex-co…...

某行动态cookie反爬虫分析

某行动态cookie反爬虫分析 1. 预览 反爬网址(base64): aHR0cDovL3d3dy5wYmMuZ292LmNu 反爬截图: 需要先加载运行js代码,可能是对环境进行检测,反调试之类的 无限debugger 处理办法 网上大部分人说的都是添加cookie来解决。 那个noscript…...

恒运资本:A股、港股全线爆发,沪指突破3300点,恒指重返2万点上方

7月31日,两市股指高开高走,沪指在金融、地产、酿酒等权重板块的带动下一举突破3300点。截至发稿,沪指、深成指、创业板指涨幅均超1%,上证50指数涨近2%。Wind数据显现,北向资金净买入超25亿元。 职业方面,券…...

Rust vs Go:常用语法对比(十二)

题图来自 Rust vs Go in 2023[1] 221. Remove all non-digits characters Create string t from string s, keeping only digit characters 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. 删除所有非数字字符 package mainimport ( "fmt" "regexp")func main() { s : hei…...

jmeter接口测试、压力测试简单实现

jmeter测试的组件执行顺序: 测试计划—>线程组—>配置元件—>前置处理器—>定时器—>逻辑控制器—>取样器—>后置处理器—>断言—>监听器 组件的作用范围: 同级组件同级组件下的子组件父组件 目前市面上的三类接口 1、基…...

PysparkNote006---pycharm加载spark环境

pycharm配置pyspark环境,本地执行pyspark代码 spark安装、添加环境变量不提了 File-Settings-Project-Project Structure-add content root添加如下两个路径 D:\code\spark\python\lib\py4j-0.10.7-src.zipD:\code\spark\python\lib\pyspark.zip 2023-07-26 阴 于…...

19套项目实战系列--Spring Cloud Spring Boot(整套源码)

整套大型项目源码,需要的回复私信:19 ┃ ┣━01.19套项目实战系列 ┃ ┃ ┣━第04套【项目实战】Spring Cloud分布式微服务实战,打造大型自媒体3大业务平台 分布式前后端分离项目分层聚合 养成应对复杂业务的综合技术能力 ┃ ┃ ┃ ┣━1-…...

TCP/IP协议详解(二)

目录内容 TCP协议的可靠性 TCP的三次握手 TCP的四次挥手 C#中,TCP/IP建立 三次握手和四次挥手常见面试题 在上一篇文章中讲解了TCP/IP的由来以及报文格式,详情请见上一篇文章,现在接着来讲讲TCP/IP的可靠性以及通过代码的实现。 在TCP首部的…...

Linux6.2 ansible 自动化运维工具(机器管理工具)

文章目录 计算机系统5G云计算第一章 LINUX ansible 自动化运维工具(机器管理工具)一、概述二、ansible 环境安装部署三、ansible 命令行模块1.command 模块2.shell 模块3.cron 模块4.user 模块5.group 模块6.copy 模块7.file 模块8.hostname 模块9.ping …...

前端面试题 —— React (二)

目录 一、React 组件中怎么做事件代理?它的原理是什么? 二、React.Component 和 React.PureComponent 的区别 三、Component, Element, Instance 之间有什么区别和联系? 四、React声明组件有哪几种方法,有什么不同&#xff1f…...

【分享帖】LCD的MCU接口和SPI接口详解

LCD(Liquid Crystal Display)液晶屏,作为电子产品的重要组成部分,是终端用户与电子产品交互的重要载体。现在市场上的LCD,按照尺寸、功能、接口、用途等分为很多种,本文主要介绍如下两种LCD物理接口&#x…...

【Java】使用@Expose注解和excludeFieldsWithoutExposeAnnotatGson()方法将toJson()过程的部分字段忽略

要在使用 Gson 的 toJson() 方法时忽略 List 中的某些字段,你可以使用 Gson 的 Expose 注解和 excludeFieldsWithoutExposeAnnotation() 方法。 首先,在 List 中的 Bean 类中,使用 Expose 注解标记你想要序列化的字段: public c…...

移动硬盘不显示怎么办?正确解决方式看这里!

移动硬盘为存储带来了很大的方便,在对数据存储时,可做到即插即用,且其体积小、容量大,且比较安全可靠。但在实际的使用中,也会出现各种问题。请看下面2个常见案例。 案例1:“各位朋友,我新买了一…...

MySQL 5.7.39 关于时间精度

前情提要 当EndTime的数据类型为datetime when the end_time’s dataType is datetime; entity.EndTime DateTime.MaxValue; context.Set<T>().Add(entity);当保存 ‘9999-12-31 23:59:59’ 这个值时,发生报错。 A crash has happended in the program when saving ‘…...

宝塔设置云服务器mysql端口转发,实现本地电脑访问云mysql

环境&#xff1a;centos系统使用宝塔面板 实现功能&#xff1a;宝塔设置云服务器mysql端口转发&#xff0c;实现本地电脑访问mysql 1.安装mysql、PHP-7.4.33、phpMyAdmin 5.0 软件商店》搜索 mysql安装即可 软件商店》搜索 PHP安装7.4.33即可&#xff08;只需要勾选快速安装&…...

centos下安装ftp-读取目录列表失败-

1.下载安装ftp服务器端和客户端 #1.安装yum -y install vsftpdyum -y install ftp #2.修改配置文件vim /etc/vsftpd.conflocal_enablesYESwrite_enableYESanonymous_enableYESanon_mkdir_write_enableYES //允许匿名用户在FTP上创建目录anon_upload_enableYES //允许匿名用户…...

0101sub-process /usr/bin/dpkg returned an error code-dpkg-linux问题集

kali linux有段时间没用了&#xff0c;现在有点时间想着继续学习下网络安全&#xff0c;那就升级更新下。 apt-get update && apt-get upgrade等待一段时间后&#xff0c;下载完毕执行安装和更新&#xff0c;更新的过程中报错退出了 问题1 更新kali-themes 需要kali-t…...

流控平台Sentinel搭建和接入教程

流量控制和限流是大型系统必不可少的组成部分&#xff0c;Sentinel是Alibaba提供的一款特别好用的专业工具&#xff0c;属于那种看起来很牛&#xff0c;用起来也很牛的工具&#xff0c;下面记录一下接入的过程。 一&#xff0c;搭建平台 1&#xff0c;下载jar包 地址&#x…...

使用 docker 一键部署 MongoDB

目录 1. 前期准备 2. 导入镜像 3. 部署MongoDB脚本 4. 配置模板文件 5. 部署MongoDB 6. 部署后配置 7. 基本维护 1. 前期准备 新部署前可以从仓库&#xff08;repository&#xff09;下载 MongoDB 镜像&#xff0c;或者从已有部署中的镜像生成文件&#xff1a; # 查看…...

【深度学习】Inst-Inpaint: Instructing to Remove Objects with Diffusion Models,指令式图像修复

论文&#xff1a;https://arxiv.org/abs/2304.03246 code:http://instinpaint.abyildirim.com/ 文章目录 AbstractIntroductionRelated WorkDataset GenerationMethodPS Abstract 图像修复任务是指从图像中擦除不需要的像素&#xff0c;并以语义一致且逼真的方式填充它们。传统…...

旧Mac焕新指南:使用OpenCore Legacy Patcher打造启动盘

旧Mac焕新指南&#xff1a;使用OpenCore Legacy Patcher打造启动盘 【免费下载链接】OpenCore-Legacy-Patcher 体验与之前一样的macOS 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 当您的Mac设备因硬件限制无法升级到最新macOS系统时&am…...

Kronos金融市场基础模型:从技术原理到量化交易系统构建

Kronos金融市场基础模型&#xff1a;从技术原理到量化交易系统构建 【免费下载链接】Kronos Kronos: A Foundation Model for the Language of Financial Markets 项目地址: https://gitcode.com/GitHub_Trending/kronos14/Kronos 金融市场的复杂性和波动性一直是投资者…...

攻克Hugo-PaperMod菜单故障:导航异常的系统化解决策略

攻克Hugo-PaperMod菜单故障&#xff1a;导航异常的系统化解决策略 【免费下载链接】hugo-PaperMod A fast, clean, responsive Hugo theme. 项目地址: https://gitcode.com/GitHub_Trending/hu/hugo-PaperMod Hugo-PaperMod作为一款轻量级静态站点生成主题&#xff0c;…...

【Docker】容器生命周期管理:从优雅停止到高效清理的实战技巧

1. 为什么需要关注容器生命周期管理&#xff1f; 第一次接触Docker时&#xff0c;很多人会把容器当成"轻量级虚拟机"来用。直到某天深夜&#xff0c;我的生产环境突然报警——磁盘空间爆满了。排查后发现&#xff0c;原来过去三个月创建的测试容器都没清理&#xff0…...

摆脱论文困扰!2026年实打实好用的专业降AI率平台

2026年论文降AI率工具已从“基础改写”升级为智能优化系统&#xff0c;核心评价维度包括AIGC识别精准度、文本自然度、学术格式合规性、查重适配能力、长文本逻辑性和多语种支持。本次测评覆盖6款主流工具&#xff0c;涵盖中文与英文、全流程与专项功能、免费与付费模式&#x…...

深入解析DHT11单总线通信:如何通过时序控制实现稳定数据传输?

1. DHT11单总线通信的基本原理 第一次用DHT11传感器时&#xff0c;我被它只用一根线就能传数据惊到了。这就像两个人打电话&#xff0c;不需要复杂的线路&#xff0c;只要一根电话线就能聊天气温湿度。DHT11采用的单总线协议&#xff08;1-Wire Protocol&#xff09;就是这样一…...

颈肩腰腿痛家庭护理,长春颈肩腰腿痛医院教你居家调理

对于轻度颈肩腰腿痛或慢性疼痛缓解期&#xff0c;家庭护理是重要的辅助治疗方式&#xff0c;无需专业设备&#xff0c;居家就能开展&#xff0c;核心是通过休息、热敷、按摩、姿势调整&#xff0c;缓解肌肉紧张和疼痛&#xff0c;预防病情加重。长春颈肩腰腿痛医院家庭护理建议…...

OpenClaw+GLM-4.7-Flash:研究者的文献收集与分析助手

OpenClawGLM-4.7-Flash&#xff1a;研究者的文献收集与分析助手 1. 为什么需要自动化文献助手 作为一名经常需要查阅大量文献的研究者&#xff0c;我过去每天要花费数小时在不同学术平台间切换——从arXiv到PubMed&#xff0c;再到学校图书馆的订阅期刊。最痛苦的不是阅读本身…...

FreeRTOS实战:基于串口空闲中断与二值信号量构建高效数据接收框架

1. 串口通信的痛点与解决方案 在嵌入式开发中&#xff0c;串口通信是最基础也最常用的外设之一。但处理不定长数据时&#xff0c;很多开发者会遇到这样的困扰&#xff1a;要么频繁进入接收中断导致CPU负载过高&#xff0c;要么需要手动设置数据包长度增加协议复杂度。我在早期项…...

OpenClaw+GLM-4.7-Flash:自动化代码审查工具

OpenClawGLM-4.7-Flash&#xff1a;自动化代码审查工具 1. 为什么需要自动化代码审查 作为一个长期与代码打交道的开发者&#xff0c;我深知代码审查的重要性。但现实情况是&#xff0c;团队中的代码审查往往成为瓶颈——要么因为人力不足导致积压&#xff0c;要么因为审查者…...