前端开发系列100-小程序篇之UI组件库的使用和封装
本文介绍微信小程序开发中常用的第三方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组件库的使用和封装的更多相关文章
- 微信小程序(二十)-UI组件(Vant Weapp)-01按装配置
1.官网 https://vant-contrib.gitee.io/vant-weapp/#/intro https://gitee.com/vant-contrib/vant-weapp 2.按装 ...
- 微信小程序(二十)-UI组件(Vant Weapp)-02使用
1.按钮使用 https://vant-contrib.gitee.io/vant-weapp/#/button 1.全局引入,在app.json中引入组件 "usingComponents ...
- 全栈开发工程师微信小程序 - 上
全栈开发工程师微信小程序-上 实现swiper组件 swiper 滑块视图容器. indicator-dots 是否显示面板指示点 false indicator-color 指示点颜色 indica ...
- [web开发] 利用微信小程序开发上海大学失物招领平台
我从开始学微信小程序到最后完全写完这个小程序耗时四天,可以说开发难度非常之低,门槛也非常低,之前从来没接触过微信小程序,重新写下开发记录. 先放图: 1.前端开发 前端我用到了iview的ui框架,因 ...
- ESA2GJK1DH1K微信小程序篇: 测试微信小程序APUConfig给WI-Fi模块配网并绑定设备,并通过MQTT控制设备
前言(源码使用介绍在最后) 一,微信小程序篇小程序下载(该源码为这节测试源代码) 二.有多少人一直在期盼着小程序可以实现SmartConfig或者Airkiss的功能? 来吧!我的这种方式包您满意. ...
- 开发一个微信小程序教程
一.注册小程序账号 1.进入微信公众平台(https://mp.weixin.qq.com/),注册小程序账号,根据提示填写对应的信息即可. 2.注册成功后进入首页,在 小程序发布流程->小程序 ...
- 开发一个微信小程序项目教程
一.注册小程序账号 1.进入微信公众平台(https://mp.weixin.qq.com/),注册小程序账号,根据提示填写对应的信息即可.2.注册成功后进入首页,在 小程序发布流程->小程序开 ...
- 如何快速地开发一个微信小程序
如何快速地开发一个微信小程序呢?我觉得作为初学者,最好能有一个模板,然后改这个模板. 同样作为初学者,刚开始的时候我有下面的几个问题,后来通过问同学,我弄清楚了. 微信小程序可以连接MySQL或者Sq ...
- 全栈开发工程师微信小程序-中
全栈开发工程师微信小程序-中 多媒体及其他的组件 navigator 页面链接 target 在哪个目标上发生跳转,默认当前小程序,可选值self/miniProgram url 当前小程序内的跳转链 ...
- 全栈开发工程师微信小程序-上(下)
全栈开发工程师微信小程序-上(下) icon 图标 success, success_no_circle, info, warn, waiting, cancel, download, search, ...
随机推荐
- Web前端入门第 38 问:CSS flex 弹性盒子与 grid 网格布局区别及应用场景
弹性盒子又称为 Flexbox,然而我更喜欢 flex 的叫法. flex 弹性盒子和 grid 网格布局作为前端开发中两把利器,它们的分界线没那么明显,虽然按照 MDN 的说法 flex 多用于一维 ...
- mysql8的sql_mode不起作用
如果sql_mode似乎没有起作用,可能是由以下几个原因造成的: 配置文件位置不正确:确保my.ini文件位于MySQL服务器实际读取配置的位置.对于Windows系统,这通常是MySQL安装目录下的 ...
- freeswitch配置视频对接
概述 freeswitch是一款简单好用的VOIP开源软交换平台. 随着4G/5G网络的完善,视频呼叫的需求慢慢变多,本文介绍使用fs对接视频线路的配置方案. 环境 CentOS 7.9 freesw ...
- ESP32教程:通过WIFI控制LED灯的开关
LED闪烁 在通过WIFI控制LED灯的开关之前,我们先实现一下LED闪烁. 接线图: 来源:https://esp32io.com/tutorials/esp32-led-blink 我的接线图: ...
- mysql8.0.16 设置远程主机访问
新版的的mysql版本已经将创建账户和赋予权限的方式分开了 1.创建账户 create user 'root'@'%' identified by '123456'; 注意密码是否符合要求,我用的阿里 ...
- 鸿蒙Next复杂列表性能优化:让滑动体验如丝般顺滑
@charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...
- Longest Palindromic Substring-----LeetCode进阶路⑤
题目描述 Given a string s, find the longest palindromic substring in s. You may assume that the maximum ...
- WinDbg 分析 .NET Dump 线程锁问题
在定位 .NET 应用程序中的高 CPU 占用问题时,WinDbg 是非常强大的工具之一,尤其配合 SOS 扩展使用可以快速锁定"忙线程"或死锁等问题. 本文将基于一次实际的分析流 ...
- 计算机组成原理 L02 指令集体系结构(ISA)复习-1
计算机组成原理 L02 指令集体系结构(ISA)复习-1 复习-1 用作例题/课后题整理 复习-2 用作理论知识点整理 如何使用大常数 由于大数值范围:[-2^31, 2^31-1],而I型指令常数字 ...
- 信创迁移必看!X86 迁 Arm 竟能全自动适配?
在信创技术转型的背景下,X86 到 Arm 架构的迁移确实是不少企业面临的实际挑战.最近在和客户对接信创项目时,我们也深度接触了这类场景,原本基于 X86 架构构建的容器应用,在迁移至 Arm 服务器 ...