小程序介绍
仿聊天窗口的微信小程序
GitHub
https://github.com/abigaleypc/wxapp-demo.git
准备工作
安装并启动项目
git clone https://github.com/abigaleypc/wxapp-demo.git
- 在
开发者工具
中添加以上demo,即可查看效果
最终效果
实现过程
该小程序主要由两个界面组成:好友列表 和 聊天窗口。
文件介绍
.wxml
后缀是页面的结构文件.js
后缀的是脚本文件.json
后缀的文件是配置文件.wxss
后缀的是样式表文件
“好友列表”界面
在friends.wxml
中,显示好友列表
- 由
<scroll-view>
渲染可滚动视图区域,官方文档 - scroll-view - 由
wx:for
进行列表渲染,官方文档 - 列表渲染 - 数据绑定:在
friends.js
中定义需要绑定到页面的数据变量 - 页面跳转:
navigator
用于页面链接,此项目用于页面跳转至聊天窗口。官方文档 - navigator
|
|
在 friends.js
中,渲染好友列表的逻辑在该文件实现,比如数据绑定,触发事件等
|
|
“聊天窗口”界面
在chat.wxml
中,显示聊天记录
- 由
wx:if
进行条件渲染,判断每条聊天记录是来自本人还是好友,当是好友信息时显示在屏幕左边,否则显示在右边。官方文档 - 条件渲染
|
|
弹性布局
微信小程序界面布局与React Native一样,采用弹性布局(Flexbox),Flex是Flexible Box的缩写,用来为盒状模型提供最大的灵活性。
Flex有三个常用属性:flex-direction
, justify-content
和 align-items
过程遇到的问题
- 微信小程序如果使用
input
,没办法想AngularJS
或者VueJS
一样实现数据双向绑定,解决办法如下
|
|
使用
wx:for
进行列表渲染,这个列表是可能被用户操作的,可能会报错,根据官方文档可查到如果列表中项目的位置会动态改变或者有新的项目添加到列表中,并且希望列表中的项目保持自己的特征和状态(如
<input/>
中的输入内容,<switch/>
的选中状态),需要使用 wx:key 来指定列表中项目的唯一的标识符。解决办法如下: 加上
wx:key
1<view wx:for="{{friends}}" wx:key="id">需要注意一点的是:微信小程序不能直接操作DOM,如
document.getElementsByClassName('test');
是错误的