现在,使用实时聊天工具成为了我们交流的第一选择(似乎也变成了唯一的选择?)人们之间的交流汇聚在指尖的方寸屏幕之间。而现在,愈来愈多的聊天记录也成为了证据作为法律判案的基础。我们渐渐离不开实时聊天软件, 也似乎离不开在屏幕上出现又消失的聊天记录它们或许是对我们做事目的的很好补充,也会是一个很好的借口。
既然我们无法阻止暴风雨的来袭,那么就让它们来的更更加猛烈吧!
¶初见
让我们先看看它的样子,也就是出现在封面图片的那个实例:
非常经典的 chatroom.init
起手,再利用前面导入的的CSS
和js
打配合,最后在chatroom.init
里面填写几个简单的配置,这个的小小的聊天记录解析器就可以正常的工作了,它无需hexo外挂标签插件,只要浏览器支持js就可以运行!
下面是我刚刚使用的实例,是不是非常简单有手就行!!!
|
¶初始化
这个组件存在 Github仓库,你可以非常简单的从仓库看到我的屎山,也可以非常方便的从仓库中使用CDN来导入chatroom.js
前端聊天记录渲染组件。首先,让我们初始化一些必须的资源.它们不需要一个特殊的环境
包括:CSS样式表、chatroom.js
前端聊天记录渲染组件、foo
图标库。在不包含图标库的情况下仅占用13Kb的空间(未压缩)
|
你也可以下载文件并在您自己的服务器上面部署这些资源,其中,我们为CSS额外准备了三种不同的配色文件,分别是:苍山绿、玄素黑、天青蓝。你可以非常轻松的在这里找到它们。
¶配置
我们完成的导入组件,接下来我们看看要如何轻松简单的配置你要分享的聊天记录?
|
最开始是 <div id="chat"></div>
这里是挂载点,必须持有唯一的id
。它于与下面的 init
函数中的 chatroomName
一致,作为这个实例的挂载点存在。也是同时存在多个分享实例存在的基础。
借来看看主要的配置项目
-
jsonFilePath
:JSON 文件的路径,必须提供- 必须是可用且合规的 JSON 文件路径
-
chatroomName
:聊天室的容器 ID,必须提供- 为你的聊天记录添加一个绑定点,必须是唯一的
id
且为div
- 为你的聊天记录添加一个绑定点,必须是唯一的
-
MyAvatar
:我的头像,可选- 提供一个可用的头像链接,必须为头像链接,此处不支持QQ号码。若是没有填写,则会从头像库中随机选取头像
-
title
:聊天室标题,可选,默认为群聊的聊天记录
-
hideAvatar
:是否隐藏我的头像,可选,默认为false
- 开启后会在全局隐藏所有用户头像
- 适合在单聊记录发送的时候开启,可以有效的增加阅读体验
不太懂?让我们看一张图片来了解一下这些配置项是怎么工作的
¶json文件规范
作为几个需要挂载的聊天记录分享组件,你需要一个JSON文件来存储这些聊天记录。所以说: 前面的一切都是为了后面的文件而安装的框架。 事实上确实如此,json的数据文件的大小会超过其他所有文件的大小。它承载的是这个框架的意义,也就是真正的数据(聊天记录)
|
如你所见,这是一个标准的chatroom.js
聊天记录的JSON文件。它是由多个数组组成,每个数组都是一个聊天记录。我们的数据就写在每一个数组里面,让我们仔细看看有什么规范是需要我们遵守的:
¶基础位置
-
name
:聊天记录的发送者名称,必须提供- 有两个固定占位符:
sys
和me
,即系统消息和我发送的消息。你可以使用它来标记系统消息和本人发送者 - 此外,此处没有其他限制,但要确保使用特殊字符时的转义符的正常使用
- 有两个固定占位符:
-
content
:聊天记录的内容,必须提供- 支持html标签
-
avatar
:聊天记录的发送者头像,可选- 目前支持3种的头像来源:
- 直接的URL链接导入
- QQ号码导入
- 头像库中随机选取
- 此条目在
me
下面是不起效果的,因为me
使用的是系统的全局头像,目前尚未测试多个不同的全局头像之间的相互干扰
- 目前支持3种的头像来源:
编写完成后将放入你的网站中,然后就可以使用了。
¶特殊语法
聊天记录支持一些特殊的语法,它们被用来添加一些特殊的功能。类似:嵌入聊天记录(对的,套娃)、引用回复、图片分享、内嵌超链接等高级功能,当初设计的目的是为了避免出现占用支付的情况。
-
聊天记录嵌入:
- 语法:
[:chat:{{标题}}::{{内嵌JSON文件路径}}::]
- 示例:
[:chat:(聊天记录)::https://link.m-c.top/chatRoom/howToAsk/chatroom.json::]
- 注意事项:注意事项与init函数一致,它会将聊天记录你填写的内容作为问询参数发送到远端的聊天记录查看组件,并生成弹窗展示。默认解析器地址:https://blog.awaae001.top/Chatroom/
- 语法:
-
引用回复:
- 语法:
[:rep:[{{被回复者}}]:{{回复内容}}::]
- 示例:
[:rep:[我]:比如:我要提醒某人的@功能: @花露水::]
- 语法:
-
图片分享:
- 语法:
[:image::{{图片链接}}::]
- 示例:
[:image::https://pic.awaae001.top/bg.webp::]
- 语法:
-
超链接:
- 语法:
[:a::{{超链接地址}}::{{超链接文本}}::]
- 示例:
[:a::https://link.m-c.top/chatRoom/howToAsk/chatroom.json::]
- 语法:
-
@某人:
- 语法:
[:call::@{{被@的人}}::]
- 示例:
[:call::@花露水::]
- 语法:
请确保所有语法符合规范,不合规的语法将会无法渲染并在你的聊天记录中直接以纯文本的形态出现,类似图片上的情况:(无法识别渲染后直接输出)
¶内嵌聊天记录解析器
其实就是一个支持URL传入参数的独立版本,支持从URL中获取chatroom.init
必须的参数,在chatroom.js
中,它是这样表述的:
|
比可以通过修改chatLink
来自定义您的远程解析查看器,在这里下载您的查看器并确保您使用的CDN和博客框架不会截断请求参数或者私自重定向,随后,将它往你的服务器上一扔……但是没有完成,我们还需要配置远程解析器的init
参数
-
下载文件打开编辑器
|
按照文件,你需要自定义的有:containerId
、myAvatar
虽然myAvatar
可以从urls中获取,但是仔细注意看:我偷懒并没有处理从URL解析头像的逻辑,你可以自己追加或者是自己指定
最后,保存,选择一个喜欢的颜色主题或者自己写一个,上传
|
就此,完成所有的基本安装
¶最后
支持直接云端修改json文件,无需修改原文中的hexo外挂标签无需额外安装对应的辅助插件即插即用、按需导入而且不限制使用平台以及拥有更高的扩展性以及可优化空间……
其次,非私有标签,高可迁移性,支持多种平台无缝切换……
但是,缺点也显而易见:依赖较好的网络环境,有时额外的json文件的导入会影响到页面的加载速度和页面大小,况且json文件内置的html标签有安全隐患,可能会有xss注入的危机
接下来还会有更多的移植按需导入的标签,敬请期待……