本文介绍微信小程序开发中常用的第三方UI组件库的基本使用流程和如何自定义组件。

1.0 第三方UI组件库的基本使用流程

通常,在使用第三方组件库之前首先需要通过代码的托管仓库组件库文档来了解该组件库都提供哪些自定义的组件这是组件和当前项目是否匹配等信息(很多的第三方组件库都提供了专门的演示小程序可以安装和体验),确定之后就只需在项目中应用了。

第三方组件库的基本使用流程

>❏ 在github下载完整的仓库代码。
>❏ 把仓库代码中存放自定义组件的文件夹拷贝到项目中(`dist目录`)。
>❏ 在项目中需要使用到的页面的json文件中对第三方组件进行配置。
>❏ 在项目中需要使用到的页面的wxml文件中直接使用,同原生组件一致。
>❏ 参考组件库文档来对自定义的组件传递参数(通常是以属性赋值的方式进行)。

ex:使用iview-weapp组件库中的i-cell组件

001 在github中找到组件库的仓库托管地址并点击clone OR Download下载。

002 下载后将仓库中的dist目录拷贝到自己的项目中,这里可以在根目录下新建components文件夹专门用来存放需要用到的所有组件,因为项目中可能用到多个UI组件库,所以把dist改名为iview目录。

003 因为在项目中的mine/index.wxml文件中需要使用到iview组件库中的i-cell、i-panel以及i-cell-group组件所以需要先在mine/index.json文件中进行配置,配置项如下。

{
"usingComponents": {
"i-cell": "../../components/ivew/cell/index",
"i-panel":"../../components/ivew/panel/index",
"i-cell-group":"../../components/ivew/cell-group/index"
}
}

004 在项目中的mine/index.wxml文件中直接使用这些组件来实现特定效果。

<i-panel title=" ">
<i-cell-group>
<i-cell title="心意卡" is-link ></i-cell>
<i-cell title="优惠券" is-link ></i-cell>
</i-cell-group>
</i-panel> <i-panel title=" ">
<i-cell-group>
<i-cell title="我的地址" is-link url="/pages/address/index"></i-cell>
<i-cell title="我的尺寸" is-link ></i-cell>
</i-cell-group>
</i-panel>

如果需要对UI组件的样式进行调整那么可以选择直接到components/iview中对既定的样式进行修改,更好的方法是给用到的组件添加新的class,并在对应的wxss文件中进行设置。

2.0 自定义组件的封装

在小程序的开发中如果某些代码需要到多个地方用到(往往是视图结构相同而具体填充的数据不同),那么可以考虑把这些代码抽取成模板或者是封装成自定义的组件,这里重点说明把代码封装成自定义组件的基本流程。

自定义组件和使用的基本流程

>❏ 在微信提供的官方开发工具中代码目录中新建`Component文件`。
>❏ 在自动生成的四个文件中编写组件内容、组件样式、组件逻辑控制相关的代码。
>❏ 在项目中需要使用到自定义组件的页面的.json文件中进行配置,设置组件的名称和路径。
>❏ 在项目中需要使用到自定义组件的页面的.wxml文件中直接像系统组件那样使用和传参即可。

ex:自定义组件i-address的封装和使用

这里先给出自定义组件使用的效果图。

001 在项目的根目录中创建components文件夹,该目录用于存放项目中用到的所有组件。

002 在components目录下创建addressComponent文件夹,新建Component文件命名为addressview,这样会在该目录下面生成四个文件,后缀分别是.wxml(控制内容)、.wxss(控制样式)、.json(控制配置,表明自己是自定义组件)和.js(控制初始化数据、属性列表和添加在组件身上的方法)。

wendingding$ tree
.
└── components
└── addressComponent
├── addressview.js
├── addressview.json
├── addressview.wxml
└── addressview.wxss

003 编写addressview.wxml文件,控制组件的结构。

<view class='address'>
<view class='address-top'>
<text class='address-top-name'>{{ name }}</text>
<button bindtap='delClick' class='address-top-del' plain>删除</button>
<button class='address-top-edit'>编辑</button>
</view>
<view class='address-bottom'>
<text class='address-bottom-phone'>电话号码:{{ phoneText }}</text>
<text class='address-bottom-detail'>联系地址:{{ detailText }}</text>
</view>
</view>

004 编写addressview.wxss文件,控制组件的样式。

.address
{
width: 100%;
height: 240rpx;
background: #fff;
margin-top: 20rpx;
} .address-top{
width: 100%;
height: 100rpx;
line-height: 100rpx;
border-bottom: 1rpx solid #eee;
position: relative;
} .address-bottom
{
width: 100%;
height: 140rpx;
/* background: yellowgreen */
} .address-top-name
{
padding-left: 30rpx;
} .address-top-del,.address-top-edit
{
width: 130rpx;
height: 60rpx;
line-height: 60rpx;
font-size: 30rpx;
position: absolute;
border-radius: 20rpx;
top: 20rpx;
} .address-top-edit
{
right: 30rpx;
background: #333;
color: #fff
} .address-top-del
{
right: 180rpx;
} .address-bottom-phone,.address-bottom-detail
{
display: block;
font-size: 30rpx;
color: #666;
padding-left: 30rpx;
height: 70rpx;
line-height: 70rpx;
}

005 编写addressview.js文件的代码,控制组件的属性、初始化数据以及方法。

Component({
/**
* 组件的属性列表
*/
properties: {
name:{
type:String,
value:"默认的收件人"
},
phoneText: {
type: String,
value: "88888888888888"
},
detailText: {
type: String,
value: "北京市天安门城楼"
}
}, /**
* 组件的初始数据
*/
data: { }, /**
* 组件的方法列表
*/
methods: {
delClick:function(e){
//....
//删除按钮的事件处理函数
}
}
})

006 在项目的address页面中需要用到这个自定义组件,那么就先在对应的json文件中进行配置,主要是设置自定义组件的名称和对应的路径,这里给出address/index.json文件内容示例。

{
"usingComponents": {
"i-address": "../../components/addressComponents/addressview"
}
}

007 在页面对应的wxml文件中直接使用自定义组件,这里给出address/index.wxml文件内容示例。

<i-address wx:key='index' wx:for='{{ arrayData }}'name='{{ item.name }}' phoneText='{{ item.phoneText }}' detailText='{{ item.detailText }}'></i-address>

008 自定义组件需要接收数据,通过编写对应的js文件设置,这里给出address/index.js文件内容示例。

// pages/address/index.js
Page({
data: {
arrayData:[
{
name: "小猪猪猪",
phoneText: "123445455846",
detailText: "广州市天河区体育中心南路水电费",
},
{
name: "熊大和赵琳",
phoneText: "154546556465466",
detailText: "广州市天河区体育中心南路水电费",
},
{
name: "花仙子",
phoneText: "154546556465466",
detailText: "广州市天河区体育中心西路",
}
]
}
})

前端开发系列100-小程序篇之UI组件库的使用和封装的更多相关文章

  1. 微信小程序(二十)-UI组件(Vant Weapp)-01按装配置

    1.官网 https://vant-contrib.gitee.io/vant-weapp/#/intro https://gitee.com/vant-contrib/vant-weapp 2.按装 ...

  2. 微信小程序(二十)-UI组件(Vant Weapp)-02使用

    1.按钮使用 https://vant-contrib.gitee.io/vant-weapp/#/button 1.全局引入,在app.json中引入组件 "usingComponents ...

  3. 全栈开发工程师微信小程序 - 上

    全栈开发工程师微信小程序-上 实现swiper组件 swiper 滑块视图容器. indicator-dots 是否显示面板指示点 false indicator-color 指示点颜色 indica ...

  4. [web开发] 利用微信小程序开发上海大学失物招领平台

    我从开始学微信小程序到最后完全写完这个小程序耗时四天,可以说开发难度非常之低,门槛也非常低,之前从来没接触过微信小程序,重新写下开发记录. 先放图: 1.前端开发 前端我用到了iview的ui框架,因 ...

  5. ESA2GJK1DH1K微信小程序篇: 测试微信小程序APUConfig给WI-Fi模块配网并绑定设备,并通过MQTT控制设备

    前言(源码使用介绍在最后) 一,微信小程序篇小程序下载(该源码为这节测试源代码) 二.有多少人一直在期盼着小程序可以实现SmartConfig或者Airkiss的功能? 来吧!我的这种方式包您满意. ...

  6. 开发一个微信小程序教程

    一.注册小程序账号 1.进入微信公众平台(https://mp.weixin.qq.com/),注册小程序账号,根据提示填写对应的信息即可. 2.注册成功后进入首页,在 小程序发布流程->小程序 ...

  7. 开发一个微信小程序项目教程

    一.注册小程序账号 1.进入微信公众平台(https://mp.weixin.qq.com/),注册小程序账号,根据提示填写对应的信息即可.2.注册成功后进入首页,在 小程序发布流程->小程序开 ...

  8. 如何快速地开发一个微信小程序

    如何快速地开发一个微信小程序呢?我觉得作为初学者,最好能有一个模板,然后改这个模板. 同样作为初学者,刚开始的时候我有下面的几个问题,后来通过问同学,我弄清楚了. 微信小程序可以连接MySQL或者Sq ...

  9. 全栈开发工程师微信小程序-中

    全栈开发工程师微信小程序-中 多媒体及其他的组件 navigator 页面链接 target 在哪个目标上发生跳转,默认当前小程序,可选值self/miniProgram url 当前小程序内的跳转链 ...

  10. 全栈开发工程师微信小程序-上(下)

    全栈开发工程师微信小程序-上(下) icon 图标 success, success_no_circle, info, warn, waiting, cancel, download, search, ...

随机推荐

  1. FastAPI依赖覆盖与测试环境模拟

    title: FastAPI依赖覆盖与测试环境模拟 date: 2025/04/10 00:58:09 updated: 2025/04/10 00:58:09 author: cmdragon ex ...

  2. Postwoman教程

    1.安装 打开git或cmder,输入如下命令: cd d:/GitDemo/ git clone https://github.com/liyasthomas/postwoman cd postwo ...

  3. Redis的淘汰机制

    第一种情况:设置了过期时间的数据 a:挑选使用最少的数据淘汰 b:随机淘汰 c:选择时间快过期数据淘汰 第二种:没有设置过期时间的数据 a:挑选使用最少的数据淘汰 b:随机淘汰 第三种: a:禁止驱逐 ...

  4. vue-element-admin整合服务端代理api

    1. 找到vue.config.js,在devServer中编辑如下 devServer: { port: port, open: true, overlay: { warnings: false, ...

  5. 大模型微调实战:通过 LoRA 微调修改模型自我认知

    本文主要分享如何使用 LLaMAFactory 实现大模型微调,基于 Qwen1.5-1.8B-Chat 模型进行 LoRA 微调,修改模型自我认知. 本文的一个目的:基于 Qwen1.5-1.8B- ...

  6. SpringBoot3整合SpringSecurity6(二)SpringSecurity默默的干了些啥

    写在前面 第一节中,我们基本上就引入SpringSecurity依赖,其他什么都没做就完成了认证功能. 之所以我们不用做什么,是因为SpringSecurity默认实现了很多功能. 当然了,这里默认实 ...

  7. 经典常用SQL查询语句和常见问题

    一.基础 1.常用sql: ------------------------ // mysql改root密码 mysqladmin -u用户名 -p旧密码 password 新密码 # ---more ...

  8. 【神兵利器】Windows平台shellcode免杀加载器

    项目介绍 免杀,bypassav,免杀框架,nim,shellcode,使用nim编写的shellcode加载器,可快速生成免杀可执行文件 下载地址 Windows平台shellcode免杀加载器下载 ...

  9. 【HUST】网络攻防实践|6_物联网设备固件安全实验|flag2~5速通指南

    写在最前:最近没空写报告,实验原理虽然已经摸清了但是没空写.flag2到4是一些大胆的想法的通关方式,flag5是正经通关的.之后写报告的时候会补发正经的实验原理,和flag2到4正常的通关方式. 记 ...

  10. vue3 基础-传送门 teleport

    之前介绍了一波混入 mixin 和 自定义指令 directive 其基本作用就是为了在 vue 中实现代码的复用. 而本篇介绍的是 vue3 的一个新特性叫做传送门. 一听这个名字是不是就感觉特别科 ...