ホームページ >ウェブフロントエンド >フロントエンドQ&A >Vueで簡単なチャットリストを実装する方法

Vueで簡単なチャットリストを実装する方法

PHPz
PHPzオリジナル
2023-04-13 10:46:461319ブラウズ

ソーシャル ネットワークとインスタント メッセージングの継続的な人気に伴い、チャット機能もさまざまなアプリケーションの重要な機能の 1 つになりました。フロントエンド開発の分野では、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;

ここでは 2 つのルートを作成しました。1 つは「/」パスの下のチャット リスト ページで、もう 1 つは「/chat-room/:」の下のチャット ルーム ページです。 ID」のパス。以下では、これらのコンポーネントの実装について 1 つずつ説明します。

3. チャット リスト コンポーネントの作成

プロジェクト ルート ディレクトリの "src/components" フォルダーに "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/components" フォルダーに "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. テスト

最後に、プロジェクトのルート ディレクトリで次のコマンドを実行して開発サーバーを起動します:

npm run serve

ブラウザを開いて、「http://localhost」にアクセスします。 :8080」を見ると、先ほど作成したチャット一覧ページが表示されます。

リスト項目をクリックして、新しいページでチャットを開始してください。

6. 概要

この記事では、Vue フレームワークを使用して簡単なチャット リストを作成する方法を紹介します。 Axios を使用してリモート データを取得し、それをページにレンダリングします。これは単なる単純な例ですが、Vue でルーティングとコンポーネントを使用してパーソナライズされたチャット アプリケーションを実装する方法を示しています。この記事が Vue 初心者の方のお役に立てれば幸いです。

以上がVueで簡単なチャットリストを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。