当前位置: 首页 > wzjs >正文

郴州免费招聘网站网站卖掉被拿来做网站了

郴州免费招聘网站,网站卖掉被拿来做网站了,做网站数据存在哪里,网页设计与制作感受Uniapp 实现图文聊天功能 下面我将介绍如何在 Uniapp 中实现一个基本的图文聊天功能,包括消息发送、接收和展示。 一、准备工作 创建 Uniapp 项目准备后端接口(可以使用云开发、自己的服务器或第三方服务) 二、实现步骤 1. 页面结构 &l…

Uniapp 实现图文聊天功能

下面我将介绍如何在 Uniapp 中实现一个基本的图文聊天功能,包括消息发送、接收和展示。

一、准备工作

  1. 创建 Uniapp 项目
  2. 准备后端接口(可以使用云开发、自己的服务器或第三方服务)

二、实现步骤

1. 页面结构

<template><view class="chat-container"><!-- 聊天消息区域 --><scroll-view class="message-list" scroll-y="true" :scroll-with-animation="true":scroll-top="scrollTop"><view v-for="(item, index) in messageList" :key="index" :class="['message-item', item.isMe ? 'my-message' : 'other-message']"><!-- 头像 --><image class="avatar" :src="item.isMe ? myAvatar : otherAvatar" mode="aspectFill"></image><!-- 消息内容 --><view class="message-content"><!-- 文本消息 --><text v-if="item.type === 'text'" class="text-message">{{ item.content }}</text><!-- 图片消息 --><image v-else-if="item.type === 'image'" class="image-message" :src="item.content" mode="widthFix"@click="previewImage(item.content)"></image></view></view></scroll-view><!-- 输入区域 --><view class="input-area"><!-- 图片选择按钮 --><view class="action-btn" @click="chooseImage"><uni-icons type="image" size="24" color="#666"></uni-icons></view><!-- 文本输入框 --><input class="input-box" v-model="inputText" placeholder="输入消息..." @confirm="sendTextMessage"/><!-- 发送按钮 --><view class="send-btn" @click="sendTextMessage"><text>发送</text></view></view></view>
</template>

2. JavaScript 逻辑

<script>
export default {data() {return {messageList: [], // 消息列表inputText: '', // 输入文本scrollTop: 0, // 滚动位置myAvatar: '/static/avatars/my-avatar.jpg', // 我的头像otherAvatar: '/static/avatars/other-avatar.jpg', // 对方头像socket: null // WebSocket 连接}},onLoad() {this.initWebSocket();// 加载历史消息this.loadHistoryMessages();},onUnload() {// 关闭 WebSocket 连接if (this.socket) {this.socket.close();}},methods: {// 初始化 WebSocketinitWebSocket() {// 这里替换为你的 WebSocket 地址this.socket = new WebSocket('wss://your-websocket-url.com');this.socket.onopen = () => {console.log('WebSocket 连接成功');};this.socket.onmessage = (res) => {const message = JSON.parse(res.data);this.receiveMessage(message);};this.socket.onerror = (err) => {console.error('WebSocket 错误:', err);};this.socket.onclose = () => {console.log('WebSocket 连接关闭');};},// 加载历史消息loadHistoryMessages() {// 这里调用你的 API 获取历史消息uni.request({url: 'https://your-api-url.com/messages',success: (res) => {this.messageList = res.data.messages;this.scrollToBottom();}});},// 发送文本消息sendTextMessage() {if (!this.inputText.trim()) return;const message = {id: Date.now(),type: 'text',content: this.inputText,isMe: true,time: new Date().toLocaleTimeString()};// 添加到消息列表this.messageList.push(message);this.inputText = '';// 发送到服务器this.sendToServer(message);// 滚动到底部this.$nextTick(() => {this.scrollToBottom();});},// 选择图片chooseImage() {uni.chooseImage({count: 1,sizeType: ['compressed'],sourceType: ['album', 'camera'],success: (res) => {const tempFilePaths = res.tempFilePaths;this.uploadImage(tempFilePaths[0]);}});},// 上传图片uploadImage(filePath) {uni.showLoading({ title: '上传中...' });// 这里替换为你的上传 APIuni.uploadFile({url: 'https://your-api-url.com/upload',filePath: filePath,name: 'file',success: (uploadRes) => {const res = JSON.parse(uploadRes.data);if (res.code === 0) {const message = {id: Date.now(),type: 'image',content: res.data.url,isMe: true,time: new Date().toLocaleTimeString()};this.messageList.push(message);this.sendToServer(message);this.$nextTick(() => {this.scrollToBottom();});}},complete: () => {uni.hideLoading();}});},// 发送消息到服务器sendToServer(message) {if (this.socket && this.socket.readyState === WebSocket.OPEN) {this.socket.send(JSON.stringify(message));} else {// 如果 WebSocket 不可用,使用 HTTP 请求uni.request({url: 'https://your-api-url.com/send',method: 'POST',data: message,success: () => {console.log('消息发送成功');}});}},// 接收消息receiveMessage(message) {message.isMe = false; // 标记为对方消息this.messageList.push(message);this.$nextTick(() => {this.scrollToBottom();});},// 预览图片previewImage(url) {uni.previewImage({urls: this.messageList.filter(item => item.type === 'image').map(item => item.content),current: url});},// 滚动到底部scrollToBottom() {// 这里需要根据实际内容高度计算this.scrollTop = 99999;}}
}
</script>

3. CSS 样式

<style>
.chat-container {display: flex;flex-direction: column;height: 100vh;background-color: #f5f5f5;
}.message-list {flex: 1;padding: 20rpx;overflow: auto;
}.message-item {display: flex;margin-bottom: 30rpx;
}.my-message {flex-direction: row-reverse;
}.other-message {flex-direction: row;
}.avatar {width: 80rpx;height: 80rpx;border-radius: 10rpx;
}.message-content {max-width: 60%;margin: 0 20rpx;
}.text-message {padding: 15rpx 20rpx;border-radius: 10rpx;background-color: #fff;font-size: 28rpx;line-height: 1.5;
}.my-message .text-message {background-color: #95ec69;
}.image-message {max-width: 100%;border-radius: 10rpx;
}.input-area {display: flex;align-items: center;padding: 20rpx;background-color: #fff;border-top: 1rpx solid #eee;
}.input-box {flex: 1;height: 70rpx;padding: 0 20rpx;margin: 0 20rpx;border-radius: 35rpx;background-color: #f5f5f5;font-size: 28rpx;
}.action-btn {padding: 10rpx;
}.send-btn {padding: 10rpx 20rpx;color: #007aff;font-size: 28rpx;
}
</style>

三、功能扩展建议

  1. 消息状态:添加发送中、已发送、已读等状态
  2. 消息撤回:实现消息撤回功能
  3. 语音消息:添加语音消息功能
  4. 表情包:支持表情包发送
  5. 消息分页:实现消息分页加载
  6. 离线消息:处理离线消息同步
  7. 消息加密:增加消息加密功能

四、注意事项

  1. 实际开发中需要替换示例中的 API 地址和 WebSocket 地址
  2. 图片上传需要根据后端接口调整参数
  3. 生产环境需要考虑安全性、性能优化等问题
  4. 对于复杂的聊天应用,建议使用成熟的即时通讯 SDK(如融云、环信等)

这个实现提供了基本的图文聊天功能,你可以根据实际需求进行扩展和优化。


文章转载自:

http://EUWefO8L.nrwkf.cn
http://0LhKnOLK.nrwkf.cn
http://JXwf7tIW.nrwkf.cn
http://VQZ9pjDz.nrwkf.cn
http://tFcvWKGG.nrwkf.cn
http://znFrsIKk.nrwkf.cn
http://iZAvydrK.nrwkf.cn
http://13k3beOl.nrwkf.cn
http://VJTcbiWW.nrwkf.cn
http://8o5wH5xD.nrwkf.cn
http://1kIC1fQT.nrwkf.cn
http://dQbJXpOa.nrwkf.cn
http://jpilhWSc.nrwkf.cn
http://9lcwzLdM.nrwkf.cn
http://5Q6RRxsG.nrwkf.cn
http://J6CF8f0Y.nrwkf.cn
http://AI6sUyDL.nrwkf.cn
http://RlbRLfIa.nrwkf.cn
http://uluRZstV.nrwkf.cn
http://kPgEP78f.nrwkf.cn
http://5hGx6dki.nrwkf.cn
http://jkVSWVBw.nrwkf.cn
http://NMrK4KhG.nrwkf.cn
http://x2NIxVmj.nrwkf.cn
http://eoHGxieZ.nrwkf.cn
http://DwFhtd61.nrwkf.cn
http://zRp4fFrP.nrwkf.cn
http://FJnZmkLA.nrwkf.cn
http://Uoj1LSe8.nrwkf.cn
http://s9f0MeVO.nrwkf.cn
http://www.dtcms.com/wzjs/640204.html

相关文章:

  • 无锡高端网站建设装修免费咨询
  • 网站建设中 显示网站互动设计方式
  • 做网站公司在哪asp网站开发的实训
  • 中国电商建站程序wordpress标题标签
  • flash网站建设技术精粹天河建设网站公司排名
  • 网站建设评比细则学校网站建设的意义的主要负责人
  • 南京电商网站开发公司青岛seo外包服务
  • 谷歌官方网站首页wordpress注册添加算术验证
  • 企业网站设计收费营销图片素材
  • wordpress分类搜索大网站如何优化
  • 建筑工程网上报建网站诚信手册网站建设搜索
  • 汕头网页建站模板php做的网站怎么调试
  • 打开建设银行官方网站首页河南智慧团建官网
  • 滁州市南谯区规划建设局网站咖啡网页怎么制作
  • 苏州网站开发公司wordpress输出副标题
  • 英文网站建设技术呼和浩特微信小程序公司
  • 微信网站开发需要什么技术上海网站建设网页制作怎么样
  • 如何查做的网站排名培训报名
  • 建立网站的相关信息诸暨市住房和建设局网站
  • 填写网站备案信息网络营销推广体系
  • 中国建设银行甘肃省分行网站做网站用微软雅黑字体被告侵权
  • 嘉兴电子商务网站建设计算机程序设计网站开发
  • 网站设计手机型网页 调用 wordpress
  • 西宁市网站设计高端网页qq邮箱登录
  • 扬州做网站公司哪家好有什么可以接单做设计的网站
  • html5网站开发费用建设直播网站需要多少钱
  • 个人网站可以做企业网站吗网站备案 上线
  • 网站开发学习流程机械设备做公司网站
  • 数据库查询网站建设wordpress菜单使用2层
  • 手机网站是怎么制作的特色网站设计