![微信小程序开发实战](https://wfqqreader-1252317822.image.myqcloud.com/cover/512/30918512/b_30918512.jpg)
4.1 基础视图组件
基础视图组件是指使用简单,并且不需要和其他视图组件结合就可以独立使用的一部分组件,这部分组件是组成界面的基础元素。
4.1.1 icon组件
icon是小程序组件库中提供的一个创建指定意义小图标的组件。组件库中默认定义了9种类型的图标,开发者可以根据需要进行使用,并且可以对其颜色进行自定义。
在测试工程中创建一个新的页面,命名为icon,创建页面的方法非常简单:首先,在pages文件夹下新建一个命名为icon的目录,在icon目录下右击,选择新建Page,命名为icon即可,创建完成后,开发工具会自动生成4个基础文件,并且在app.json文件中注册icon页面;其次,为了方便测试页面,可以修改开发工具的编译模式,在开发工具的工具栏上选择“添加编译模式”,如图4-1所示。
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/74_1.jpg?sign=1739588541-QgZKCkAnz9x9yFgv3kIGkGdcrfDXsNO6-0-8289fa38d83912025e6cdd34faf6d24e)
图4-1 添加编译模式
在弹出的窗口中,将模式名称命名为icon,启动页面设置为icon页面,其他无须修改,单击“确定”保存模式即可,如图4-2所示。
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/74_2.jpg?sign=1739588541-GACXkG4OguYqt3kHzqKW079SnvAlXlWr-0-a9308a8f7fb58604f49cace01a851f10)
图4-2 自定义编译模式
之后项目将默认以icon页面作为启动页,这样可以方便观察与调试。
在icon.js文件中加载如下初始化数据:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/75_1.jpg?sign=1739588541-UTOxxwPIKfIwKWzY5T9W5ei0In7uSNSp-0-78cde1d339de28315b29846fbff86c32)
上面的数据定义了icon的所有可用类型,每种类型对应不同样式的图标,在icon.wxml文件中编写如下代码:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/75_2.jpg?sign=1739588541-xgEUJshDVNxzQkqWSacMiMtKCoMMeGwz-0-c2a03383a41678296cd0f25e553beac6)
上面的代码根据数据源个数循环创建了一组icon图标组件,并将其布局在界面上,icon组件的size属性设置图标的尺寸,color属性设置图标的颜色,type属性设置图标的类型,在icon.wxss文件中编写如下代码:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/75_3.jpg?sign=1739588541-meDHXv22N8WgV3W8l0ILpK4uEuj7DySP-0-14142a9677e273843deba7b990299dcd)
运行代码,效果如图4-3所示。
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/75_4.jpg?sign=1739588541-Dl2lNc0JnL4kh5YJjVWYbvbt3BY9bYjH-0-b587f79260b1bf9bdd11e18b85f0282d)
图4-3 icon组件的运行展示
4.1.2 text组件
text组件的主要作用是展示文本。在测试工程中新建一个text页面,在text.wxml文件中编写如下代码:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/76_1.jpg?sign=1739588541-6RU317DqMB5Ck6joIko9DPdynDACdqUh-0-61d4f21308a0a1f8c3effaf7d3182bfa)
上述代码创建了一段简单的文本视图,效果如图4-4所示。
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/76_2.jpg?sign=1739588541-zmPukZHHjWGJ3SKItQN0J6ZJv1meUCP6-0-d9d92a3e0140287f3043445debccb33a)
图4-4 text组件的运行效果
text组件中只能够嵌套text组件,通过text组件嵌套的方式可以在一段文本中设置不同风格的多段文本块。
默认文本组件只能够进行文本的显示,不可以进行交互,但可以添加selectable属性使其支持文本选中,选中文本后可以进行复制、查询等操作。
4.1.3 rich-text组件
前面提及,text组件中只能嵌套text组件,虽然可以通过text组件的style属性定制文本的展示样式,但是其功能依然有限,如无法在文本中插入图片、超链接等。小程序组件库中还提供了一个专门用来创建富文本的组件:rich-text组件。
rich-text组件允许在文本中插入常用的HTML节点,包括图片、段落、超链接等。rich-text组件的使用也非常简单,可以通过定义一组HTML节点创建富文本组件。
在测试工程中新建一个rich-text页面,在rich-text.wxml文件中编写如下代码:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/76_3.jpg?sign=1739588541-xgKAvouMAoPHmr0SfNNMllMkSGGiNeXt-0-c2d4f9cee558d31234f3d573d4b5a9b1)
上面的代码设置了rich-text组件的nodes属性,这个属性对应的数据定义在rich-text.js文件中:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/77_1.jpg?sign=1739588541-nSzL2HZaKWTzIDUQq3qH52nfjGZB0cDD-0-5b7aeb972031a60eaa54e6bda3df285d)
运行代码,效果如图4-5所示。
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/77_2.jpg?sign=1739588541-bgj5qRy4bKEtDGwNpI9fQ14RAg8jjL4M-0-59390c47ff5d15de67f6bd26c3c15c7f)
图4-5 rich-text组件的运行效果
如上述代码所示,rich-text组件通过一组节点进行定义,节点由对象描述,节点对象可配置的属性如表4-1所示。
表4-1 节点对象可配置的属性
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/77_3.jpg?sign=1739588541-L841GGgdxA90GzppQBgvzwdq3HWXhRBL-0-24a6313ee6f3afac8631fd7f1f115180)
rich-text组件支持的HTML标签如表4-2所示。
表4-2 rich-text组件支持的HTML标签
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/78_1.jpg?sign=1739588541-dssdTELShUm9SrKjd7B0rRj4kPndGRNv-0-665d07d868639b4772ab6c92e267077c)
4.1.4 progress组件
progress组件用来创建进度条视图,其使用非常简单,并且提供了丰富的可定制化的属性,示例代码如下:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/79_1.jpg?sign=1739588541-qKY6dWmioA5agFwr1uj94skZNmlgvMLl-0-e02b9b2c9e6d71b92360a7eb63a307be)
运行代码,效果如图4-6所示。
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/79_2.jpg?sign=1739588541-A9Ts28LxwGeQHj69EN0x5EsPXof02uUO-0-d839e3189f262de0d4869df4ff19b3f0)
图4-6 progress组件的运行效果
progress组件的常用属性如表4-3所示。
表4-3 progress组件的常用属性
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/79_3.jpg?sign=1739588541-jvhteLb84HX65IEIs3V0iFPqAreZKPOd-0-0924e9c85196b0ac4e98f04334d74164)
4.1.5 button组件
button是小程序组件库提供的一个封装完善的按钮组件,其实,在小程序开发中,并非只有button组件才能作为用户交互的按钮,自定义的view组件都可以通过绑定用户交互事件的方式接收用户的操作。除提供最基础的交互功能外,button组件还封装了许多微信官方提供的服务接口,如进行用户登录、进行当前页面的分享等。
在测试工程中新建一个button页面,在button.wxml文件中编写如下代码:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/80_1.jpg?sign=1739588541-sj91dO6jyZ4tY5JK5CV0e7yc9TioAvVe-0-025c30cf6f902005eb96bbd5ca1290c3)
运行代码,效果如图4-7所示。
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/80_2.jpg?sign=1739588541-TcdB7pMwsjrwghaFn4nak0t1VBVUN7gi-0-2b872b3159b0d572a584b2d01565ebd4)
图4-7 button组件的运行效果
button组件的size属性用来设置组件的尺寸,可选值有default和mini,default为默认尺寸的按钮组件,mini为小尺寸按钮。type属性设置按钮的风格,风格会影响按钮的渲染颜色:primary风格的按钮会被渲染为绿色,default风格的按钮会被渲染为白色,warn风格的按钮会被渲染为红色。
plain属性用来设置按钮的背景色是否透明。除了这些属性,button组件还可配置其他属性,如表4-4所示。
表4-4 button组件可配置属性列举
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/81_1.jpg?sign=1739588541-uPom3eHmsz8Kbshm4eb0vEgHqbgJWqLh-0-a098a15f0c1777fd83b904f965f17cb9)
表4-4列举了button组件的基础属性,button组件更多是用来作为特殊微信服务的入口,如上面的实例代码,当单击页面上的按钮时会弹出分享弹窗,button组件可以通过设置open-type属性使用微信开发功能,open-type支持的功能如表4-5所示。
表4-5 open-type支持的功能
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/81_2.jpg?sign=1739588541-UkTaP7lWUcCnnm9vSIgHRNT7aFDelYz8-0-083844c9674d1ef4c5b8f52f69c785a5)
调用微信开放功能,通常需要配置button组件的属性一起使用,button组件中与微信开放功能相关的属性如表4-6所示。
表4-6 button组件中与微信开放功能相关的属性
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/81_3.jpg?sign=1739588541-5lpHeNqJbAEYBFadhs43QIFtXtKukVhn-0-bd3a97050103fdd9012f05c0567a6124)