# comment **Repository Path**: theajack/comment ## Basic Information - **Project Name**: comment - **Description**: No description available - **Primary Language**: JavaScript - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-04-02 - **Last Updated**: 2022-07-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## [tc-comment](https://github.com/theajack/tc-comment) **[English](https://github.com/theajack/comment) | [使用案例](https://theajack.github.io/message-board/?app=tc-comment)** 一个支持markdowm和emoji评论组件,无需任何配置,无需申请任何账号,即引即用 ## 特性 1. 一行代码引入,无需任何配置 2. 无需申请任何账号,即引即用 3. 支持markdowm和emoji评论组件 4. 支持实时预览 5. 支持代码消息的插入链接 6. 支持深色模式,适配网站原有深色模式 7. 支持自定义 services 和 url 8. 支持插入图片 ### 1. 快速使用 ```js import {initComment} from 'tc-comment'; initComment({ appName: 'xxx', // 自己起一个你的应用名称 }); ``` cdn 使用 ```html ``` ### 2. vue 组件引入 ```js // ... import {Comment} from 'tc-comment'; Comment.init({appName: 'xxx'}); // 自己起一个你的应用名称 export default { components: {Comment}, // ... } ``` ### 3. 配置参数 ```ts initComment({ appName: string; el?: HTMLElement | string; // Comment.init 传入该参数无效 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; }; }) // Comment.init 参数与上述参数一致 ``` 1. appName: 必选 起一个应用名称,建议数字+字母组合,支持使用 / 划分目录 如 appName = blog/2022/hello 2. el 渲染的容器 默认会append一个元素到body上 3. theme 主题色 4. darkSelector 填写一个深色主题色的选择器,一般用于适配主网站的深色主题 5. services,urlConfig,dataHandler 后续详细介绍 ### 4. 自定义 services tc-comment 支持自定义方法来实现你自己的请求方法 ```js import {initComment} from 'tc-comment'; initComment({ el: '#app', services: { // 请自行注入三个请求 插入评论 插入回复 和 获取评论 insertComment(){ }, getComment(){ }, getComment(){ } } }); ``` insertComment 和 getComment ts声明 ```ts interface InsertComment { (data: { name: string; contact: string; content: string; }): Promise; } interface InsertReply { (data: { name: string; contact: string; content: string; commentId: number; }): Promise; } interface GetComment { (query: { index?: number; size?: number; all?: boolean; condition?: object; }): Promise>; } ``` ### 5. 自定义接口 urlConfig tc-comment 支持通过配置 urlConfig 自定义接口 urlConfig 参数优先级低于 services参数 ```js 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 会调用该域名下面的三个接口,请自行部署 1. get 请求 用于拉取评论 - path: urlConfig.get - method: get - 参数: index, size, all, condition, app - 返回: {data: {code: 0, data: [CommentObject]}} 0表示成功 - responseType: json CommentObject ```ts { id: number; name: string; contact: string; content: string; createTime: number; // 时间戳 reply: Array<{ name: string; contact: string; content: string; createTime: number; // 时间戳 }>; } ``` 1. insert 请求 用于上传评论 - path: urlConfig.insert - method: post - 参数: name, contact, content, app - 返回: {data: {code: 0}} 0表示成功 - responseType: json 3. reply 请求 用于上传回复 - path: urlConfig.insert - method: post - 参数: name, contact, content, commentId, app - 返回: {data: {code: 0}} 0表示成功 - responseType: json ### 6. dataHandler 使用自定义 urlConfig时 可以搭配 dataHandle 修改请求数据 使用方式如下 ```js 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}, } }); ```