Как создать клон WhatsApp Web с помощью Vue.js, Firebase и Spring Boot.

Введение

Мы ежедневно используем множество социальных сетей, например Facebook, LinkedIn, Twitter, Whatsapp, Instagram. Одна из наиболее часто используемых функций - это чат в реальном времени. В этом уроке мы собираемся создать его, используя Vue.js и Firebase.

Это часть серии руководств, в которых мы будем создавать полнофункциональное приложение для социальных сетей, в котором пользователи смогут входить в систему, публиковать сообщения, добавлять друзей и общаться в чате.

Раньше мы использовали Firebase для создания входа в социальную сеть, используя Spring Boot в бэкэнде и Vue.js во фронтенде.



Живая демонстрация:



Код на Github для этого руководства:



Структура проекта

Давайте создадим страницу чата

Давайте построим представление для всей страницы, оно состоит из двух компонентов:

  1. ChatSidebar
  2. Просмотр чата

Для каждого друга у нас есть имя комнаты, которое мы храним в бэкэнде. И мы получаем его через этот API.

Полный код для вышеперечисленного можно найти здесь:



Ответ API

Получив информацию о комнатах, мы отправляем ее дочерним компонентам. Давайте посмотрим на компонент ChatSidebar.

Компонент ChatSidebar

Он получает опору комнат из родительского чата и отображает список компонентов SidebarChatUserRow для каждого пользователя из опоры списка комнат, переданной от родительского Chat.vue.

В правом верхнем углу также есть 3 значка, которые выглядят очень хорошо!

Компонент SidebarChatUserRow

Этот компонент очень простой - он просто отображает электронную почту и аватар для каждого пользователя. Мы можем добавить последнее сообщение позже, если захотим.

Компонент ChatView

Это правая часть чата, где мы отображаем текущие чаты. Сначала мы обсудим, как мы отображаем чаты, а затем увидим, когда мы щелкнем по другому пользователю, как обновить чаты.

По умолчанию мы передаем комнату первого пользователя, поэтому у нее есть комната для реквизита, в которой также есть информация о пользователе (аватар, электронная почта), которую мы отображаем в заголовке.

По имени комнаты мы находим связанный roomId в Firebase, получаем все связанные чаты и отображаем эти чаты.

Создание нового чата

Есть форма, где мы скрываем кнопку отправки и действие onclick. Мы предотвращаем действие формы по умолчанию для отправки и обновления с помощью v-on:submit.prevent directive.

Мы получаем данные для inputMsg div и добавляем новую запись в firebase, добавляя чат в название комнаты.

Теперь у нас осталась одна важная функция: выбор другого друга на боковой панели и обновление окна чата.

Поскольку они не относятся к типу "родитель-потомок", мы не можем напрямую передавать или обновлять свойства. Ответ - генерировать событие и прислушиваться к нему.

Полный код компонента chatview.view:



В этом руководстве мы рассмотрели несколько действительно интересных современных тем JavaScript, например:

  1. Как передать реквизит.
  2. Как визуализировать компоненты.
  3. Как испускать события и использовать их.
  4. Как интегрировать Firebase.

Вот и все. Вы можете запустить код внешнего интерфейса на своем локальном компьютере и прокомментировать здесь, если что-то пойдет не так. Спасибо за прочтение!

использованная литература



Больше контента на plainenglish.io