Vue로 간단한 채팅 목록을 구현하는 방법
소셜 네트워크와 인스턴트 메시징의 지속적인 인기로 인해 채팅 기능도 다양한 애플리케이션의 필수 기능 중 하나가 되었습니다. 프런트엔드 개발 분야에서는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undress AI Tool
무료로 이미지를 벗다

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

WebAsSembly (WASM) ISM) ISAGAME-ChangerForfront-EndDevelopersSeekingHigh-performanceWebApplications.1.WasmisalInstructionFormatThatrUnSatnear-NativesPeed, EnablingLanguagesLikerust, C, andgotoExecuteInthebrowser.2.Itclplestrathtrathtrathertrathertrathertrathertrathertrathlact

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

thetargetattributeinananhtmlanchortagspecifieswheretoopenthelinkeddocument.1._selfopensthelinkinthesametab (default) .2._blankopensthelinkinanewtaborwindow.3._parentopensthelinkintheparentframe.4._topopensthelinkin thepoldowbody

AgoodCustomHookinReActiSableFunctionEction은 "사용"thatenCapsulatestTateFullogicForingAcrossComponents; itshouldSolveAcommonProblem, BeflexLethroughparameters LikeUseSetch (url, Options), ReturniconsiscentsTructuresanarrayOROBJE를 사용합니다

THETAGISUSSODTOMARKDELETEDTEXT.2.THETIMEANDCITEATTETESTESCIFY.2

순수한 CSS로 반응 형 자동 회전 목마 슬라이더를 만들고 HTML 구조, Flexbox 레이아웃 및 CSS 애니메이션을 결합하는 것이 가능합니다. 2. 먼저 여러 권장 항을 포함하는 시맨틱 HTML 컨테이너를 구축하고 각 .item에는 참조 내용 및 저자 정보가 포함되어 있습니다. 3. 부모 컨테이너를 사용하여 디스플레이를 설정하십시오 : Flex, 너비 : 300% (3 개의 슬라이드) 오버플로 : 숨겨져 수평 배열을 달성하십시오. 4. @KeyFrames를 사용하여 TransLateX 변환을 0%에서 -100%로 정의하고 애니메이션을 결합하여 Scroll15SlinearInfinite를 결합하여 원활한 자동 스크롤을 달성하십시오. 5. 미디어 추가

예, Contentedable 속성을 사용하여 HTML 요소를 편집 할 수 있습니다. 구체적인 방법은 대상 요소에 contenteditable = "true"를 추가하는 것입니다. 예를 들어이 텍스트를 편집 할 수 있으며 사용자는 컨텐츠를 직접 클릭하고 수정할 수 있습니다. 이 속성은 Div, P, Span, H1 ~ H6과 같은 블록 레벨 및 인라인 요소에 적합합니다. 기본값은 편집 할 수있는 "true", "false"는 편집 할 수없고, 상위 요소 설정을 상속하기 위해 "상속"입니다. 접근성을 향상 시키려면 tabindex = "0 & Quo를 추가하는 것이 좋습니다.

CSS 선택기를 사용하는 경우, 과도한 제한을 피하기 위해 먼저 사용하는 저 선택기를 사용해야합니다. 1. 특이성 수준을 이해하고 유형, 클래스 및 ID 순서대로 합리적으로 사용하십시오. 2. 다목적 클래스 이름을 사용하여 재사용 가능성과 유지 보수성을 향상시킵니다. 3. 성능 문제를 피하기 위해 속성 및 의사 클래스 선택기를 사용하십시오. 4. 선택기를 짧고 명확한 범위를 유지하십시오. 5. 구조적 명확성을 향상시키기 위해 BEM 및 기타 명명 사양을 사용하십시오. 6. 태그 선택기의 남용을 피하고 Nth-Child를 피하고 스타일을 오랫동안 제어 할 수 있도록 도구 클래스 또는 모듈 식 CSS를 사용하는 데 우선 순위를 부여하십시오.
