微信小程序是一种可以在微信内部运行的应用程序,可以在微信平台上实现各种功能。社交分享应用是一种可以让用户分享自己的生活、想法、照片等内容,并与其他用户进行互动和交流的应用。
在本文中,我们将使用微信小程序开发制作一个简单的社交分享应用。该应用将具有以下功能:
- 用户注册和登录:用户可以通过手机号码注册新账号,并使用手机号码和密码登录到应用中。
- 用户个人资料:用户可以编辑和更新自己的个人资料,包括头像、昵称、性别、年龄等信息。
- 发布动态:用户可以发布自己的动态,包括文字、图片和视频。其他用户可以在动态下方进行评论和点赞。
- 关注和粉丝:用户可以关注其他用户,并查看自己的粉丝列表。
- 消息通知:用户可以接收到系统通知、关注用户的动态更新等消息通知。
下面,我们将逐步实现以上功能。
1. 创建一个新的微信小程序项目
首先,我们需要在微信开发者工具中创建一个新的微信小程序项目。在创建项目时,我们需要提供一个小程序的名称和 AppID。
2. 用户注册和登录
2.1 创建数据库
我们首先需要在微信开发者工具中创建一个数据库,用于存储用户信息。在数据库中,我们需要创建一个名为 "users" 的集合,用于存储用户的手机号码、密码和其他信息。
2.2 注册页面
在小程序的 pages 目录中创建一个 register 目录,并在该目录下创建一个 register.wxml 文件和一个 register.wxss 文件。register.wxml 文件的内容如下:
<view class="container">
<text>手机号码:</text>
<input bindinput="inputPhone" placeholder="请输入手机号码"></input>
<text>密码:</text>
<input bindinput="inputPassword" placeholder="请输入密码" type="password"></input>
<button bindtap="register">注册</button>
</view>
register.wxss 文件的内容如下:
.container {
margin: 20px;
}
input {
width: 100%;
margin-bottom: 20px;
}
button {
width: 100%;
background-color: #007AFF;
color: #FFF;
padding: 10px;
border-radius: 5px;
}
接下来,在小程序的 pages 目录下创建一个 register 目录,并在该目录下创建一个 register.js 文件。register.js 文件的内容如下:
Page({
data: {
phone: '',
password: ''
},
inputPhone(e) {
this.setData({
phone: e.detail.value
});
},
inputPassword(e) {
this.setData({
password: e.detail.value
});
},
register() {
// 将用户手机号码和密码保存到数据库中
wx.cloud.database().collection('users').add({
data: {
phone: this.data.phone,
password: this.data.password
},
success: (res) => {
console.log('注册成功', res);
wx.showToast({
title: '注册成功',
icon: 'success'
});
},
fail: (err) => {
console.error('注册失败', err);
wx.showToast({
title: '注册失败',
icon: 'error'
});
}
});
}
});
在小程序的 app.json 文件中,将注册页面添加到 pages 列表中:
{
"pages": [
"pages/index/index",
"pages/register/register"
],
...
}
2.3 登录页面
在小程序的 pages 目录中创建一个 login 目录,并在该目录下创建一个 login.wxml 文件和一个 login.wxss 文件。login.wxml 文件的内容如下:
<view class="container">
<text>手机号码:</text>
<input bindinput="inputPhone" placeholder="请输入手机号码"></input>
<text>密码:</text>
<input bindinput="inputPassword" placeholder="请输入密码" type="password"></input>
<button bindtap="login">登录</button>
</view>
login.wxss 文件的内容如下:
.container {
margin: 20px;
}
input {
width: 100%;
margin-bottom: 20px;
}
button {
width: 100%;
background-color: #007AFF;
color: #FFF;
padding: 10px;
border-radius: 5px;
}
接下来,在小程序的 pages 目录下创建一个 login 目录,并在该目录下创建一个 login.js 文件。login.js 文件的内容如下:
Page({
data: {
phone: '',
password: ''
},
inputPhone(e) {
this.setData({
phone: e.detail.value
});
},
inputPassword(e) {
this.setData({
password: e.detail.value
});
},
login() {
// 根据用户手机号码和密码查询数据库中的用户信息
wx.cloud.database().collection('users').where({
phone: this.data.phone,
password: this.data.password
}).get({
success: (res) => {
if (res.data.length) {
console.log('登录成功', res);
wx.showToast({
title: '登录成功',
icon: 'success'
});
// 将用户信息保存到本地缓存中
wx.setStorageSync('userInfo', res.data[0]);
// 跳转到首页
wx.navigateTo({
url: '/pages/index/index'
});
} else {
console.log('登录失败');
wx.showToast({
title: '登录失败',
icon: 'error'
});
}
},
fail: (err) => {
console.error('登录失败', err);
wx.showToast({
title: '登录失败',
icon: 'error'
});
}
});
}
});
3. 用户个人资料
3.1 个人资料页面
在小程序的 pages 目录下创建一个 profile 目录,并在该目录下创建一个 profile.wxml 文件和一个 profile.wxss 文件。profile.wxml 文件的内容如下:
<view class="container">
<image src="{{userInfo.avatar}}" class="avatar"></image>
<text>昵称:</text>
<input bindinput="inputNickname" value="{{userInfo.nickname}}" placeholder="请输入昵称"></input>
<text>性别:</text>
<radio-group bindchange="selectGender">
<radio value="男" checked="{{userInfo.gender == '男'}}">男</radio>
<radio value="女" checked="{{userInfo.gender == '女'}}">女</radio>
</radio-group>
<text>年龄:</text>
<input bindinput="inputAge" value="{{userInfo.age}}" placeholder="请输入年龄"></input>
<button bindtap="updateProfile">保存</button>
</view>
profile.wxss 文件的内容如下:
.container {
margin: 20px;
}
.avatar {
width: 100px;
height: 100px;
border-radius: 50%;
margin-bottom: 20px;
}
input {
width: 100%;
margin-bottom: 20px;
}
button {
width: 100%;
background-color: #007AFF;
color: #FFF;
padding: 10px;
border-radius: 5px;
}
接下来,在小程序的 pages 目录下创建一个 profile 目录,并在该目录下创建一个 profile.js 文件。profile.js 文件的内容如下:
Page({
data: {
userInfo: {}
},
onLoad() {
// 从本地缓存中获取用户信息
const userInfo = wx.getStorageSync('userInfo');
this.setData({
userInfo
});
},
inputNickname(e) {
this.setData({
'userInfo.nickname': e.detail.value
});
},
selectGender(e) {
const gender = e.detail.value;
this.setData({
'userInfo.gender': gender
});
},
inputAge(e) {
this.setData({
'userInfo.age': e.detail.value
});
},
updateProfile() {
// 更新用户个人资料
wx.cloud.database().collection('users').doc(this.data.userInfo._id).update({
data: {
nickname: this.data.userInfo.nickname,
gender: this.data.userInfo.gender,
age: this.data.userInfo.age
},
success: (res) => {
console.log('个人资料更新成功', res);
wx.showToast({
title: '个人