> 웹 프론트엔드 > 프런트엔드 Q&A > Vue로 간단한 채팅 목록을 구현하는 방법

Vue로 간단한 채팅 목록을 구현하는 방법

PHPz
풀어 주다: 2023-04-13 11:06:28
원래의
1318명이 탐색했습니다.

소셜 네트워크와 인스턴트 메시징의 지속적인 인기로 인해 채팅 기능도 다양한 애플리케이션의 필수 기능 중 하나가 되었습니다. 프런트엔드 개발 분야에서는 Vue 프레임워크를 사용하여 채팅 목록을 구현하는 것이 일반적인 관행입니다. 이 글에서는 Vue를 사용하여 간단한 채팅 목록을 구현하는 방법을 소개합니다.

1. 프로젝트 구축

먼저 Vue 스캐폴딩 도구를 사용하여 Vue 프로젝트를 구축해야 합니다. 명령줄에 다음 코드를 입력하세요:

vue create chat-app
로그인 후 복사

이렇게 하면 "chat-app"이라는 Vue 프로젝트가 생성됩니다. 다음으로 Vue, Vue Router, Axios 및 Bootstrap을 포함하여 몇 가지 필수 종속성을 설치해야 합니다. 명령줄에 다음 코드를 입력합니다.

npm install vue vue-router axios bootstrap
로그인 후 복사

2. 경로를 생성합니다.

프로젝트 루트 디렉터리의 "src" 폴더에 "router.js" 파일을 생성합니다. 코드는 다음과 같습니다.

import Vue from 'vue';
import VueRouter from 'vue-router';
import ChatList from './components/ChatList.vue';
import ChatRoom from './components/ChatRoom.vue';

Vue.use(VueRouter);

const routes = [
  {
    path: '/',
    name: 'ChatList',
    component: ChatList
  },
  {
    path: '/chat-room/:id',
    name: 'ChatRoom',
    component: ChatRoom,
    props: true
  }
];

const router = new VueRouter({
  mode: 'history',
  base: process.env.BASE_URL,
  routes
});

export default router;
로그인 후 복사

여기서 두 개의 경로를 만들었습니다. 하나는 "/" 경로 아래의 채팅 목록 페이지이고 다른 하나는 "/chat-room/:id" 경로 아래의 채팅방 페이지입니다. 아래에서는 이러한 구성요소의 구현을 하나씩 설명하겠습니다.

3. 채팅 목록 컴포넌트 생성

프로젝트 루트 디렉터리의 "src/comComponents" 폴더에 "ChatList.vue" 파일을 생성합니다. 코드는 다음과 같습니다.

<template>
  <div>
    <h1>聊天列表</h1>
    <ul class="list-group">
      <li v-for="(user, index) in users" :key="index" class="list-group-item" @click="goToChatRoom(user.id)">
        {{ user.name }}
      </li>
    </ul>
  </div>
</template>

<script>
import axios from 'axios';

export default {
  name: 'ChatList',
  data() {
    return {
      users: []
    };
  },
  created() {
    this.getUsers();
  },
  methods: {
    getUsers() {
      axios.get('https://jsonplaceholder.typicode.com/users').then(response => {
        this.users = response.data;
      });
    },
    goToChatRoom(id) {
      this.$router.push({ name: 'ChatRoom', params: { id } });
    }
  }
};
</script>
로그인 후 복사

이 구성 요소에서는 Vue의 "v-for" 지시문을 사용하여 "https://jsonplaceholder.typicode.com/users"에서 얻은 사용자 목록을 탐색하고 채팅 목록 페이지에 렌더링합니다. . 사용자가 목록 항목을 클릭하면 해당 채팅방 페이지로 이동하는 "goToChatRoom" 메서드가 트리거됩니다.

4. 채팅방 컴포넌트 생성

프로젝트 루트 디렉터리의 "src/comComponents" 폴더에 "ChatRoom.vue" 파일을 생성합니다. 코드는 다음과 같습니다.

<template>
  <div>
    <h1>{{ currentChatUser.name }}</h1>
    <ul class="list-group">
      <li v-for="(message, index) in messages" :key="index" class="list-group-item">
        <strong>{{ message.sender }}:</strong> {{ message.content }}
      </li>
    </ul>
    <form @submit.prevent="sendMessage">
      <div class="form-group">
        <input v-model="newMessage" type="text" class="form-control" placeholder="请输入消息内容">
      </div>
      <button type="submit" class="btn btn-primary">发送消息</button>
    </form>
  </div>
</template>

<script>
import axios from 'axios';

export default {
  name: 'ChatRoom',
  props: ['id'],
  data() {
    return {
      currentChatUser: {},
      messages: [],
      newMessage: ''
    };
  },
  created() {
    this.getCurrentChatUser();
    this.getMessages();
  },
  methods: {
    getCurrentChatUser() {
      axios.get(`https://jsonplaceholder.typicode.com/users/${this.id}`).then(response => {
        this.currentChatUser = response.data;
      });
    },
    getMessages() {
      axios.get(`https://jsonplaceholder.typicode.com/posts?userId=${this.id}`).then(response => {
        this.messages = response.data.map(message => {
          return { sender: this.currentChatUser.name, content: message.title };
        });
      });
    },
    sendMessage() {
      this.messages.push({ sender: '我', content: this.newMessage });
      this.newMessage = '';
    }
  }
};
</script>
로그인 후 복사

이 컴포넌트에서는 현재 채팅방의 채팅 개체와 메시지 목록을 가져와서 페이지에 렌더링합니다. 또한 사용자가 새 메시지를 보낼 수 있는 양식을 추가했습니다.

5. Test

마지막으로 프로젝트 루트 디렉터리에서 다음 명령을 실행하여 개발 서버를 시작합니다.

npm run serve
로그인 후 복사

브라우저를 열고 "http://localhost:8080"을 방문하면 채팅 목록 페이지를 볼 수 있습니다. 방금 La를 만들었어요!

목록 항목을 클릭하면 새 페이지에서 채팅이 시작됩니다!

6. 요약

이 글에서는 Vue 프레임워크를 사용하여 간단한 채팅 목록을 작성하는 방법을 소개합니다. 우리는 Axios를 사용하여 원격 데이터를 가져와 페이지에 렌더링합니다. 이는 단순한 예일 뿐이지만 Vue에서 라우팅 및 구성 요소를 사용하여 개인화된 채팅 애플리케이션을 구현하는 방법을 보여줍니다. 이 글이 Vue 초보자들에게 도움이 되기를 바랍니다.

위 내용은 Vue로 간단한 채팅 목록을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿