如何使用 TalkJS API 构建类似 WhatsApp 的聊天应用程序

2025-06-07

如何使用 TalkJS API 构建类似 WhatsApp 的聊天应用程序

今天,我们将向您展示如何使用TalkJS 聊天 API创建类似 WhatsApp 的聊天 UI 。我们将从 TalkJS 默认主题开始,并使用TalkJS 主题对其进行自定义。以下是 TalkJS 收件箱的默认样式。首先,我们将列出所有需要进行的更改,使其看起来更像 WhatsApp。完成后,我们将了解如何在 TalkJS 的主题编辑器中进行这些更改。

TalkJS 收件箱默认主题

要做的事情

对于这篇文章,我们将列出我们想要做的事情的清单,然后逐一解决它们。

  • 将聊天标题颜色更改为绿色 (#009688)
  • 将用户消息颜色更改为#CFE9BA,将其他人的消息更改为白色(#FFFFFF)
  • 将聊天背景颜色更改为#E5DDD5
  • 从聊天框中删除用户的头像
  • 将消息正文的样式改为圆角矩形,并略微添加阴影。同时略微增加字体粗细,使其与 WhatsApp 聊天界面保持一致。
  • 将 WhatsApp 中的高亮颜色更改为传统的绿色 (#009688)。将活动高亮项目的文本颜色更改为白色
  • 删除消息输入字段的背景

完成以上所有操作后,收件箱应该看起来像这样。如你所见,它几乎和普通的 WhatsApp 聊天一样好用。

TalkJS 收件箱 - WhatsApp 主题

TalkJS主题编辑器

如果您之前有过前端 Web 开发经验,那么样式表一定对您不陌生。TalkJS 提供了一个样式管理面板,您可以在其中编辑有限的字段(目前),以便体验 TalkJS 聊天主题。即使您的经验有限,它也非常有用,因为它结合了文本字段和样式表。

要应用主题,我们需要在 TalkJS 仪表板的“角色”部分中创建一个名为“默认”的角色。设置好角色后,您可以向下滚动到“UI 主题”部分。目前,它位于默认主题中。在主题编辑器中设置新主题后,它将出现在主题列表中,我们只需选择它即可将其应用到收件箱。它还允许您实时编辑主题,并刷新页面以直接查看更改。现在,让我们开始编辑收件箱的样式。

用户消息

在主题编辑器部分中点击“创建新主题”,并为主题设置新名称。我们首先需要从聊天中删除头像。WhatsApp 不会在每条消息中显示头像,而只会在顶部显示。为此,我们需要执行以下操作:将第 54 行的 showAvatars 属性设置为 false,并删除第 58 至 62 行。

我们首先编辑 message-row 类,以减少两个连续消息之间的距离。编辑 margin-bottom 和 margin-top 属性,并将它们设置为以下值。

.message-row {
    margin-bottom: 0.1rem;
    margin-top: 0.2rem;
    display: flex;
    /* Align the avatar and the message centrally, but if the message's height
       is greater than the avatar we will align it to the top
       -- See Avatar.template for how this is achieved */
    align-items: center;
}
Enter fullscreen mode Exit fullscreen mode

接下来,我们将编辑消息类别,包括发起聊天的人和聊天对象。

.message {    
    overflow: hidden;
    border-radius: 8px;
    position: relative;
    background-color: white;
    width: -moz-fit-content;
    width: fit-content;
    max-width: 500px;
    padding: 4px;
    font-weight: 500;    
    box-shadow: 0 1px 0.5px rgba(0, 0, 0, 0.13);
    margin-bottom: 10px;
}
Enter fullscreen mode Exit fullscreen mode

这个类用于常规聊天消息。我们还需要更改当前用户发起的聊天消息的一些属性。这条消息的颜色不同,所以我们需要将该属性添加到下面的类中。这里的其他所有代码都可以删除。

.by-me .message {
    background-color: #cfe9ba;
}
Enter fullscreen mode Exit fullscreen mode

完成这些更改后,您将看到聊天消息开始看起来更像来自 WhatsApp 的消息。

聊天标题

这里我们只需要更改一个字段,那就是背景颜色。将其更改为以下值。

.header {
    display: flex;
    align-items: center;
    height: 4.5rem;
    background-color: #009688;
    flex-shrink: 0;
}
Enter fullscreen mode Exit fullscreen mode

这将使聊天标题呈现出 WhatsApp 上独特的绿色。

阿凡达

删除 border-style、border-width 和 border-color 属性。这样就能移除聊天标题栏上用户头像的白色边框。

布局

点击左侧菜单的布局部分。这将为一些无法在 CSS 中配置或有时会覆盖 CSS 样式的组件提供易于使用的界面。点击“全局”子部分,并将字体系列更改为“Segoe UI”、“Segoe UI”、Tahoma、Geneva、Verdana、sans-serif。现在,打开“聊天框”子部分,并将背景颜色设置为 #E5DDD5。接下来,打开“收件箱”提要面板子部分,并将背景颜色设置为 #FFF(白色)。

对于消息字段子部分,我们需要更改两个属性。首先,将 borderRadius 设置为 4rem,然后将颜色设置为 #000(黑色)。在高亮子部分,将 backgroundColor 更改为 #009688,颜色更改为 #FFF(白色)。打开面板页脚部分,并将 backgroundColor 更改为透明。最后,在通知切换部分,将 borderColor 更改为 #009688。

总结

TalkJS 收件箱 - WhatsApp 主题最终版

如果您正确遵循了以上所有步骤,您的聊天收件箱应该看起来像这样,当然消息除外。甚至桌面通知切换开关也采用了 WhatsApp 的配色方案。如果您将 TalkJS 聊天的收件箱样式更改为使用此主题的聊天框,它看起来将与 WhatsApp 的移动 UI 类似(值得一提的是,您可以在移动应用中部署 TalkJS 聊天)。您无需进行任何其他样式更改。如果您想减小宽度,只需前往布局菜单中的聊天框部分,并将最大宽度更改为您喜欢的值。我们在下方将其设置为 320px。

TalkJS Chatbox WhatsApp 主题手机版

您会发现,将我们的聊天界面主题设计得像 WhatsApp 一样是多么容易。更有趣的是,我们实际上并没有编写大量代码来实现这一点。TalkJS 中的主题编辑器允许用户通过非常直观的界面,使用基于表单的输入来创建新主题或编辑现有主题。更改会自动保存,您可以立即看到效果。

文章来源:https://dev.to/talkjs/building-a-whatsapp-clone-with-talkjs-chat-api-cdf
PREV
如何使用 Daily API 向 TalkJS 聊天添加音频和视频通话
NEXT
2025 年 React 前端路线图:从初学者到高级