How to implement a simple chat list with Vue
With the continuous popularity of social networks and instant messaging, the chat function has also become one of the essential functions of various applications. In the field of front-end development, it is a common practice to use the Vue framework to implement chat lists. This article will introduce how to use Vue to implement a simple chat list.
1. Project construction
First, we need to use the Vue scaffolding tool to build a Vue project. Enter the following code into the command line:
vue create chat-app
This will create a Vue project named "chat-app". Next, we need to install some necessary dependencies, including Vue, Vue Router, Axios and Bootstrap. Enter the following code in the command line:
npm install vue vue-router axios bootstrap
2. Create a route
Create a "router.js" file in the "src" folder in the project root directory. The code is as follows:
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;
Here we have created two routes, one is the chat list page under the "/" path, and the other is the chat room page under the "/chat-room/:id" path. We will explain the implementation of these components one by one below.
3. Create a chat list component
Create a "ChatList.vue" file in the "src/components" folder in the project root directory. The code is as follows:
<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>
In this component, we use Vue's "v-for" directive to traverse the user list obtained from "https://jsonplaceholder.typicode.com/users" and add it to Rendered to the chat list page. When the user clicks on a list item, we trigger a "goToChatRoom" method, which navigates to the corresponding chat room page.
4. Create a chat room component
Create a "ChatRoom.vue" file in the "src/components" folder in the project root directory. The code is as follows:
<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>
In this component, we obtain the chat objects and message list of the current chat room and render them into the page. We also added a form that allows users to send new messages.
5. Test
Finally, run the following command in the project root directory to start the development server:
npm run serve
Open the browser and visit "http://localhost:8080" , you can see the chat list page we just created!
Click on the list item to start chatting on the new page!
6. Summary
This article introduces how to use the Vue framework to build a simple chat list. We use Axios to get remote data and render it into the page. Although this is just a simple example, it shows how to use routing and components in Vue to implement a personalized chat application. I hope this article can be helpful to Vue beginners.
The above is the detailed content of How to implement a simple chat list with Vue. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

WebAssembly(WASM)isagame-changerforfront-enddevelopersseekinghigh-performancewebapplications.1.WASMisabinaryinstructionformatthatrunsatnear-nativespeed,enablinglanguageslikeRust,C ,andGotoexecuteinthebrowser.2.ItcomplementsJavaScriptratherthanreplac

Zustandisalightweight,performantstatemanagementsolutionforReactappsthatavoidsRedux’sboilerplate;1.Useselectivestateslicingtopreventunnecessaryre-rendersbyselectingonlytheneededstateproperty;2.ApplycreateWithEqualityFnwithshalloworcustomequalitychecks

rel="stylesheet"linksCSSfilesforstylingthepage;2.rel="preload"hintstopreloadcriticalresourcesforperformance;3.rel="icon"setsthewebsite’sfavicon;4.rel="alternate"providesalternateversionslikeRSSorprint;5.rel=&qu

When using OAuth 2.0, PKCE authorization code process should be adopted instead of implicit process, avoid storing tokens in localStorage on the front end, priority is given to processing refresh tokens through the back end, and secure integration is achieved using a trusted authentication library to ensure the security of front-end applications.

ThetargetattributeinanHTMLanchortagspecifieswheretoopenthelinkeddocument.1._selfopensthelinkinthesametab(default).2._blankopensthelinkinanewtaborwindow.3._parentopensthelinkintheparentframe.4._topopensthelinkinthefullwindowbody,removingframes.Forexte

UseservercomponentsbydefaulttoreduceclientJavaScriptandimproveloadtime;2.LeveragelayoutcachingforpersistentUIwithoutre-rendersduringnavigation;3.Optimizedatafetchingwithautomaticcachingandrevalidationusingfetchoptions;4.StreamcontentwithSuspenseandlo

CSSSubgridenableschildelementstoalignacrossrowsandcolumnsofaparentgrid,solvingalignmentissuesinnestedlayouts.1.Itallowsagriditemtoinherittheparent’sgridstructurebyusingsubgridforgrid-template-rowsorgrid-template-columns.2.Thisisusefulinforms,cardcomp

Four steps are required to achieve the internationalization of the front-end: First, use structured JSON to centrally manage the translation content to avoid hard coding; second, use mature i18n libraries such as react-i18next, vue-i18n or formatjs to support complex language rules; third, design in advance to adapt to different language lengths and RTL layouts, reserve space and use elastic layouts; fourth, add translation annotations to clarify the context, facilitate collaboration. These four points can reduce maintenance costs and improve multilingual adaptation accuracy and development efficiency.
