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

news2024/9/22 23:22:55

抽取重复样式

样式复用

我们会发现很多时候在开发的过程中会存在多个页面中都用到了同样的样式,那么其实之前有提到过,公用样式可以放在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.msgs
    let 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. 常用的工具类就不需要重复发明轮子,学会使用已有第三方开源库可提升效率。

 

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

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

相关文章

win10安装cygwin

参考 Cygwin简介及其下载安装卸载_cygwin是什么软件_徐晓康的博客的博客-CSDN博客https://blog.csdn.net/weixin_42837669/article/details/114381405这个文章写的非常好,不过现在如果想安装多个包的话,采用gui的方式可以不行了,我采用的方式…

JavaScript 简单实现观察者模式和发布-订阅模式

JavaScript 简单实现观察者模式和发布-订阅模式 1. 观察者模式1.1 什么是观察者模式1.2 代码实现 2. 发布-订阅模式2.1 什么是发布-订阅模式2.2 代码实现2.2.1 基础版2.2.2 取消订阅2.2.3 订阅一次 1. 观察者模式 1.1 什么是观察者模式 概念:观察者模式定义对象间…

【Windows11】家庭版开启组策略指南

目录 背景新建一个cmd文件运行运行结果 背景 Win11找不到gpedit.msc怎么办?有用户通过命令窗口想要去打开本地组策略的时候,系统突然弹出了一个错误提示,显示系统缺少了gpedit.msc导致无法开启本地组策略编辑器了。那么这个情况要怎么去进行…

【Web开发指南】如何用MyEclipse进行JavaScript开发?

由于MyEclipse中有高级语法高亮显示、智能内容辅助和准确验证等特性,进行JavaScript编码不再是一项繁琐的任务。 MyEclipse v2023.1.2离线版下载 JavaScript项目 在MyEclipse 2021及以后的版本中,大多数JavaScript支持都是开箱即用的JavaScript源代码…

【Minio怎么用】Minio上传图片并Vue回显

流程: 目录 1.文件服务器Minio的安装 1.1 下载Minio安装后,新建1个data文件夹。并在该安装目录cmd 敲命令。注意不要进错目录。依次输入 1.2 登录Minio网页端 1.3 先建1个桶(buckets),点击create a bucket 2. Spr…

前端小练-仿掘金导航栏

文章目录 前言项目结构导航实现创作中心移动小球消息提示 完整代码 前言 闲的,你信嘛,还得开发一个基本的门户社区网站,来给到Hlang,不然我怕说工作量不够。那么这个的话,其实也很好办,主要是这个门户网站的UI写起来麻…

操作系统_进程与线程(三)

目录 3. 同步与互斥 3.1 同步与互斥的基本概念 3.1.1 临界资源 3.1.2 同步 3.1.3 互斥 3.2 实现临界区互斥的基本方法 3.2.1 软件实现方法 3.2.1.1 算法一:单标志法 3.2.1.2 算法二:双标志法先检查 3.2.1.3 算法三:双标志法后检查 …

HarmonyOS/OpenHarmony元服务开发-卡片使用自定义绘制能力

ArkTS卡片开放了自定义绘制的能力,在卡片上可以通过Canvas组件创建一块画布,然后通过CanvasRenderingContext2D对象在画布上进行自定义图形的绘制,如下示例代码实现了在画布的中心绘制了一个笑脸。 Entry Component struct Card { private c…

如何把几个视频合并在一起?视频合并方法分享

当我们需要制作一个比较长的视频时,将多个视频进行合并可以使得整个过程更加高效。此外,合并视频还可以避免出现“剪辑断层”的情况,使得视频内容更加连贯,更加容易被观众理解和接受。再有,合并视频还可以减少视频文件…

第三方电容笔支持随手写吗?性价比高的触控笔推荐

在日常生活中,电容笔的用途非常广泛,无论是配上笔记本,还是配上ipad,又或者是配上手机,都是非常好用的办公利器。首先要明确自己的需要,然后才能选择适合自己的产品。苹果Pencil因为具有特殊的重力压感&…

数据结构07:查找[C++][顺序、分块、折半查找]

图源:文心一言 考研笔记整理~🥝🥝 在数据结构和算法中,查找是一种常见的操作,它的目的是在一个数据集合中找到一个满足条件的元素。本文将介绍三种常用的查找方法,分别是顺序查找、折半查找和分块查找~&a…

Unity实现在3D模型标记

Canvas 模式是UI与3D混合模式(Render modelScreen space-Camera) 实现在3D模型标记,旋转跟随是UI不在3D物体下 代码: using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public clas…

记一次sql注入分析与绕过【一】

下面是来自今天的项目,简单记录一下 手工注入 加单引号sql报错 sql语句如下,可见参数id原本未被引号包裹 SELECT DISTINCT u.* FROM t_user u WHERE u.name like %1% and u.account like %1% and u.state ? order by id desc limit 0,20 多方尝试…

warnings.filterwarnings(“ignore“) 是干嘛的

在python中运行代码经常会遇到的情况是——代码可以正常运行但是会提示警告 那么如何来控制警告输出呢?其实很简单,python通过调用warnings模块中定义的warn()函数来发出警告。我们可以通过警告过滤器进行控制是否发出警告消息 import warnings warnin…

数字工厂管理系统的实施步骤是什么

数字工厂管理系统是一种基于数字化技术和智能化设备的工厂管理系统,它可以实现工厂的全面、实时、动态管理,提高生产效率、降低成本、保证产品质量。实施数字工厂管理系统需要一系列的实施步骤,下面就数字工厂管理系统的实施步骤进行详细说明…

postgresql selected, no connection解决办法|armitage连接不上

postgresql selected, no connection 数据库没有连接,手动连接数据库即可。 手动连接数据库 msf > db_connect msf:admin127.0.0.1/msf 还是不行。 说明,数据库都连不上,先解决这个问题。 正文 看过很多,也试了很多&#xf…

05 http连接处理(中)

05 http连接处理(中) 流程图与状态机 从状态机负责读取报文的一行,主状态机负责对该行数据进行解析,主状态机内部调用从状态机,从状态机驱动主状态机 主状态机 三种状态,标识解析位置 CHECK_STATE_RE…

Python工具箱系列(三十九)

使用zlib对数据进行压缩 现实世界中,大量存在着对数据压缩的需求。为此,python内置了zlib压缩库,可以方便的对任意对象进行压缩。 下述代码演示了对字符串进行压缩: import zlib# 压缩一段中文 originstr 神龟虽寿&#xff0c…

风靡朋友圈的妙鸭相机,到底用了哪些底层技术?

不知道大家近期的朋友圈有没有被和海马体、天真蓝如出一辙的AI写真刷屏! 这些面若桃花、精致到头发丝、光影充满氛围感的写真都是一款叫“妙鸭相机”的小程序生成的!只要9.9,就能体验999写真! 虽然只要9.9,但生成的照片…

Mac电脑目录

System(系统)Applications(应用程序)应用程序目录,默认所有的GUI应用程序都安装在这里User(用户)存放用户的个人资料和配置。每个用户有自己的单独目录Library(资料库)系…