English | 使用案例
一个支持markdowm和emoji评论组件,无需任何配置,无需申请任何账号,即引即用
特性
- 一行代码引入,无需任何配置
- 无需申请任何账号,即引即用
- 支持markdowm和emoji评论组件
- 支持实时预览
- 支持代码消息的插入链接
- 支持深色模式,适配网站原有深色模式
- 支持自定义 services 和 url
- 支持插入图片
快速使用
1 2 3 4
| import {initComment} from 'tc-comment'; initComment({ appName: 'xxx', });
|
cdn 使用
1 2 3 4 5 6
| <script src="https://cdn.jsdelivr.net/npm/tc-comment/tc-comment.min.js"></script> <script> TComment.initComment({ appName: 'xxx', }); </script>
|
vue 组件引入
1 2 3 4 5 6 7 8 9
| import {Comment} from 'tc-comment';
Comment.init({appName: 'xxx'});
export default { components: {Comment}, }
|
配置参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| initComment({ appName: string; el?: HTMLElement | string; theme?: 'dark' | 'light'; darkSelector?: string; services?: { insertComment: InsertComment; getComment: GetComment; insertReply: InsertReply; }; urlConfig?: { host: string; get?: string; insert?: string; reply?: string; }; dataHandler?: { get?: (data: IGetOption) => any; insert?: (data: IComment) => any; reply?: (data: IReply) => any; }; })
|
- appName: 必选 起一个应用名称,建议数字+字母组合,支持使用 / 划分目录 如 appName = blog/2022/hello
- el 渲染的容器 默认会append一个元素到body上
- theme 主题色
- darkSelector 填写一个深色主题色的选择器,一般用于适配主网站的深色主题
- services,urlConfig,dataHandler 后续详细介绍
自定义 services
tc-comment 支持自定义方法来实现你自己的请求方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| import {initComment} from 'tc-comment'; initComment({ el: '#app', services: { insertComment(){
}, getComment(){
}, getComment(){
} } });
|
insertComment 和 getComment ts声明
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| interface InsertComment { (data: { name: string; contact: string; content: string; }): Promise<boolean>; }
interface InsertReply { (data: { name: string; contact: string; content: string; commentId: number; }): Promise<boolean>; }
interface GetComment { (query: { index?: number; size?: number; all?: boolean; condition?: object; }): Promise<Array<{ createTime: number; name: string; content: string; }>>; }
|
自定义接口 urlConfig
tc-comment 支持通过配置 urlConfig 自定义接口
urlConfig 参数优先级低于 services参数
1 2 3 4 5 6 7 8 9 10
| import {initComment} from 'tc-comment'; initComment({ el: '#app', urlConfig: { host:'www.example.com', get:'/api/comment/get', insert:'/api/comment/insert', reply:'/api/reply/insert' }, });
|
使用 urlConfig 参数的话,tc-comment 会调用该域名下面的三个接口,请自行部署
- get 请求 用于拉取评论
- path: urlConfig.get
- method: get
- 参数: index, size, all, condition, app
- 返回: {data: {code: 0, data: [CommentObject]}} 0表示成功
- responseType: json
CommentObject
1 2 3 4 5 6 7 8 9 10 11 12 13
| { id: number; name: string; contact: string; content: string; createTime: number; reply: Array<{ name: string; contact: string; content: string; createTime: number; }>; }
|
- insert 请求 用于上传评论
- path: urlConfig.insert
- method: post
- 参数: name, contact, content, app
- 返回: {data: {code: 0}} 0表示成功
- responseType: json
- reply 请求 用于上传回复
- path: urlConfig.insert
- method: post
- 参数: name, contact, content, commentId, app
- 返回: {data: {code: 0}} 0表示成功
- responseType: json
dataHandler
使用自定义 urlConfig时 可以搭配 dataHandle 修改请求数据
使用方式如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| import {initComment} from 'tc-comment'; initComment({ el: '#app', urlConfig: { host:'www.example.com', get:'/api/comment/get', insert:'/api/comment/insert', reply:'/api/reply/insert' }, dataHandler: { get: (data) => {return data}, insert: (data) => {return data}, reply: (data) => {return data}, } });
|