首页 > 其他分享 >『江鸟中原』鸿蒙---聊天应用(JS)

『江鸟中原』鸿蒙---聊天应用(JS)

时间:2023-12-05 17:05:27浏览次数:38  
标签:江鸟 content sender flex JS --- Studio countdown message

鸿蒙大作业,一个简单的基于JS的聊天应用


环境搭建

软件要求

硬件要求

  • 设备类型:华为手机或运行在DevEco Studio上的华为手机设备模拟器。
  • HarmonyOS系统:3.1.0 Developer Release。

环境搭建

  1. 安装DevEco Studio,详情请参考下载和安装软件
  2. 设置DevEco Studio开发环境,DevEco Studio开发环境需要依赖于网络环境,需要连接上网络才能确保工具的正常使用,可以根据如下两种情况来配置开发环境:
  • 如果可以直接访问Internet,只需进行下载HarmonyOS SDK操作。
  • 如果网络不能直接访问Internet,需要通过代理服务器才可以访问,请参考配置开发环境
  1. 开发者可以参考以下链接,完成设备调试的相关配置:

相关概念

  • input组件:交互式组件,包括单选框,多选框,按钮和单行文本输入框。
  • 自定义组件:自定义组件是用户根据业务需求,将已有的组件组合,封装成的新组件,可以在工程中多次调用,从而提高代码的可读性。

简要介绍

主要分为登录界面和聊天界面两部分,下面是代码展示和运行实现

登录界面

代码展示

.css文件


.container {
    flex-direction: column;
    height: 100%;
    width: 100%;
    background-image: url('/common/images/launchPage/ic_launch_page.png');
    background-repeat: no-repeat;
    background-size: cover;
    background-position: center;
}

.countdown-box {
    position: fixed;
    width: 72vp;
    height: 28vp;
    border-radius: 18vp;
    background-color: #9E9E9E;
    top: 10vp;
    right: 15vp;
    justify-content: center;
    align-items: center;
}

.countdown-text {
    text-align: center;
    font-size: 14fp;
    color: #FFFFFF;
    font-weight: 400;
}

.hml文件


<div class="container">
    <div class="countdown-box" @click="toHomePage">
        <text class="countdown-text">{{ $t('strings.skip') }}{{ countdown }}</text>
    </div>
</div>

.js文件

import router from '@ohos.router';
import CommonConstants from '../../common/constant/commonConstants';

export default {
  data: {
    countdown: CommonConstants.COUNTDOWN,
    timer: null
  },
  onShow() {
    this.timer = setInterval(() => {
      --this.countdown;
      if (this.countdown === 0) {
        this.toHomePage();
      }
    }, 1000);
  },
  toHomePage() {
    clearInterval(this.timer);
    router.replace({
      url: CommonConstants.ROUTER_HOME_PAGE
    });
  }
}
运行实现

『江鸟中原』鸿蒙---聊天应用(JS)_登录界面

聊天界面

代码展示

.css文件

.chat-container {
    display: flex;
    flex-direction: column;
    height: 500px;
}

 .chat-header {
     display: flex;
     justify-content: space-between;
     align-items: center;
     padding: 20px;
     background-color: #f1f1f1;
 }

 .chat-messages {
     margin-top: 20px;
     display: flex;
     flex-direction: column;
 }

 .message {
     display: flex;
     align-items: center;
     margin-bottom: 10px;
 }

 .message-sender {
     font-weight: bold;
 }

 .message-content {
     margin-left: 10px;
 }

 .chat-input {
     margin-top: 20px;
 }

.hml文件

  <div class="chat-container">
        <div class="chat-header">
            <image style="width: 50px; height: 50px; " src="../../common/images/my/ic_person.png"></image>
            <button @click="toggleChat">Toggle Chat</button>
        </div>
        <div class="chat-messages" if="{{showChat}}">
            <div class="message" for="{{message in messages}}" >
                <text class="message-sender">{{ $t(message.sender) }}</text>
                <text class="message-content">{{ $t(message.content) }}</text>
            </div>
        </div>
        <div class="chat-input" if="{{showChat}}">
            <input type="text" value="{{newMessage}}" onchange="changeModel" placeholder="Type your message here..." />
            <button @click="sendMessage">Send</button>
        </div>
    </div>

.js文件

export default {
  data: {
    showChat: true,
    messages: [
      {
        id: 1, sender: 'Alice', content: 'Hello Bob!'
      },
      {
        id: 2, sender: 'Bob', content: 'Hello Alice!'
      },
      {
        id: 3, sender: 'Alice', content: 'How are you doing?'
      },
      {
        id: 4, sender: 'Bob', content: 'Im doing well. How about you?'
      }
    ],
    newMessage: ''
  },


  toggleChat() {
    this.showChat = !this.showChat;
  },
  sendMessage() {
    const message = { id: Date.now(), sender: 'Alice', content: this.newMessage };
    this.messages.push(message);
    this.newMessage = '';
  },
  changeModel(val_obj){
    this.newMessage = val_obj.text;
  }

}
运行实现

『江鸟中原』鸿蒙---聊天应用(JS)_开发环境_02

总结

通过本次学习,了解了一些新的组件的使用方法,更加深入的学习了鸿蒙的相关知识,后续会继续学习,添加一些新的功能。

标签:江鸟,content,sender,flex,JS,---,Studio,countdown,message
From: https://blog.51cto.com/u_16408518/8693511

相关文章

  • 无涯教程-Erlang - last函数
    返回列表的最后一个元素。last-语法last(lst1)Lst1-元素列表。last-返回值返回列表的最后一个元素。-module(helloLearnfk).-import(lists,[last/1]).-export([start/0]).start()->Lst1=[1,2,3,4],io:fwrite("~w~n",[last(Lst1)]).当我们运行上述......
  • 迅为RK3588开发板定制Ubuntu和Debian系统-系统定制(无法联网)
    在上一个小节中讲解了ubuntu和debian文件系统的定制,但那是在可以运行脚本正常构建系统的前提下,而本小节则是针对部分特殊用户无法联网的情况。在source目录下存放了已经构建完成的压缩包,如下图所示然后使用以下命令将该压缩包解压到build目录下,解压完成如下图所示:tar-vxf......
  • 解决vue-django配置问题
    后端跨域问题django安装pipinstalldjango-cors-headers添加应用,主应用下的settingINSTALLED_APPS=[...#跨域'corsheaders',...]中间件设置MIDDLEWARE=[...#跨域中间键设置'corsheaders.middleware.CorsMiddleware', ...]添加黑白名单(se......
  • DASCTF Apr.2023 X SU战队2023开局之战-pdf_converter(_revenge)web-wp
    继续刷题ing~这次是追溯到今年四月的这个DASCTF首赛,闲来无事就看看打打复现啥的,争取多积累几个解题姿势。但后面题环境开不了,就先没打复现,难绷。pdf_converter(_revenge)进去感觉像Thinkphp,用个以前做过的报错payload试试能不能出版本:/index.php?s=captcha还真是。直接去搜......
  • elementui el-upload 实现不自动上传功能,点击确定在上传,并且显示上传进度条功能
       <div><divclass="rowmt-2"><divclass="col-lg-12"><label>agent文件名</label><inputv-model="addParams.newAgent"type="text"......
  • CircPCBL:用CNN-BiGRU-GLT模型鉴定植物circrna
    CircPCBL:IdentificationofPlantCircRNAswithaCNN-BiGRU-GLTModel报告人:王乐记录人:曹宇婕会议时间:2023-11-17会议地点:QQ会议关键词:作者:期刊:Plants-Basel年份:2023论文原文:https://doi.org/10.3390/plants12081652主要内容概要环状rna(circRNAs)是前mRNA剪接后产......
  • c++ json的解析和QT中json的操作
    1.下载jsoncpp源码2.首先建议jsoncpp源码编译成动态库https://www.bilibili.com/video/BV1pb4y1W7ZZhttps://www.bilibili.com/video/BV1Ra4y1e7gL (1)用QT的Cmake工具 (2)用Visualstudio a.工具打开jsoncpp源码,在CMakeLists.txt右键->jsoncpp的CMak......
  • Spring Boot2 开启系统日志(3)- 在Logback中配置日志
    Logback的配置文件通常命名为logback.xml,它控制了日志记录方式、级别和输出目标。在SpringBoot项目中,可以将logback.xml文件放置在src/main/resources目录下。以下是一个基本的logback.xml配置示例:<?xmlversion="1.0"encoding="UTF-8"?><configuration><!--控制台输......
  • el-table实现滚动效果
    实现步骤:1、方法methods:{scroll(){letel=document.querySelector('.el-table__body-wrapper')el.addClassName='anim'setTimeout(()=>{//console.log(this.items[0])this.tableData.p......
  • Linux环境中动态库文件(.so文件)的realname,soname和linkname--解释清楚
    realname:实际等同于库文件的filename,是在库文件生成时就被指定的,如:gcc-shared-o$(realname)dependenceflagsrealname的一般格式为lib$(name).so.$(major).$(minor).$(revision),$(name)是动态库的名字,$(major).$(minor).$(revision)分别表示主版本号,子版本号和修正版本......