
douyin 仿抖音项目评论数据解析从 7z 压缩数据文件到 Vue 3 评论面板的完整链路【免费下载链接】douyinVue3 Pinia 仿抖音Vue 在移动端的最佳实践 . Imitate TikTok Vue Best practices on Mobile项目地址: https://gitcode.com/GitHub_Trending/do/douyin本篇技术指南以 douyin 仿抖音Vue 3 Pinia仓库中的评论数据文件 video_id_7267478481213181238.md 为切入点完整拆解该项目评论数据从原始抓取、清洗落盘、静态托管到前端 Mock 拦截、API 封装、评论面板渲染的整条数据链路并逐字段讲解抖音评论数据模型。读完你将掌握这类仿抖音 Demo 的评论数据是如何组织的、每个字段的业务含义是什么、以及评论面板在前端是如何消费这些字段的可直接迁移到自己的移动端短视频项目中使用。一、数据集全景视频 7267478481213181238 的评论样本1.1 文件定位与存储形态该数据文件位于仓库的 public/data/comments/ 目录下同目录共有 16 组video_id_*.md与video_id_*.json文件分别对应 16 条抖音视频的评论数据。需要特别说明的是video_id_7267478481213181238.md表面上是 Markdown 文件实际存储形态是7-Zip 压缩后的 JSON 数据文件头魔数为37 7a bc af 27 1c解压后即得到与同目录 video_id_7267478481213181238.json 完全一致的评论数组。也就是说仓库中通过以.md扩展名保存压缩 JSON的方式存放评论数据配合前端 Mock 层直接解析详见第四节实现了一份数据、多种读取方式。1.2 数据规模与内容背景该数据集对应抖音视频aweme_id 7267478481213181238视频内容为博主彭十六elf的东方美学系列马面裙巴黎街拍评论数据覆盖了视频发布前后的完整讨论周期。经对 JSON 数据的统计其规模特征如下指标数值评论总数40 条热门评论is_hot true20 条占比 50%折叠评论is_folded true0 条作者亲自点赞is_author_digged true0 条评论点赞总数digg_count求和145,538首条评论时间2023-08-15 09:31:03UTC末条评论时间2024-03-28 14:01:30UTC评论用户覆盖省份ip_location广东 6、浙江 4、山东 4、湖北 4、四川 3、江苏 3、西藏 2、湖南 2、云南 1、河南 1 等评论排序遵循抖音典型的作者置顶 → 热门评论 → 普通评论顺序数组首位是作者彭十六elf的置顶回复点赞 3,192其后是 20 条按点赞量排序的热门评论再往后是时间上陆续新增的普通评论digg_count多为 0。1.3 热门评论 TOP 榜以下是按digg_count排序的 TOP 10 评论直观展示了该视频的社区反馈焦点点赞数昵称评论内容节选36,536..他们的目光是欣赏不是打量21,532疏离.从此男孩的心中有了白月光18,032转转奢侈品这才是国人的审美15,235赶海一哥妈妈 我看见外国人了12,453早点睡 ̆̈不是回国了怎么还在法国8,063草莓牛奶妹⁹⁸⁵东方美学这题我会粉色是不一样的美6,056起司姨太美惨4,238星陨看啊她们都是笑着的3,407羽宝儿外国人的眼神里并不是鄙夷与不解而是欣赏与赞美3,192彭十六elf作者最初做东方美学系列 是因为想通过自己小小的力量去宣传我们东方文化…从内容看评论区围绕东方美学、马面裙、文化自信、传统文化出海等主题形成了高度共鸣多条评论的sub_comment_count楼中楼回复数也达到了 100~300 的量级说明该视频评论区的互动深度较高。二、评论数据模型逐字段详解每条评论是一个 JSON 对象共包含20 个字段可分为评论主体、互动状态、用户信息、时间戳四组。以 video_id_7267478481213181238.json 中的一条真实记录为例{ comment_id: 7267776615597359926, create_time: 1692161122, ip_location: 四川, aweme_id: 7267478481213181238, content: 他们的目光是欣赏不是打量[流泪][流泪], is_author_digged: false, is_folded: false, is_hot: true, user_buried: false, user_digged: 0, digg_count: 36536, user_id: 73695745581, sec_uid: MS4wLjABAAAAkcsOgLNbp0KNT1wEEuu1Rmegjc_vCBibLWvTw19fTYE, short_user_id: 1921005886, user_unique_id: FCFFMar1, user_signature: 说, nickname: .., avatar: https://p3-pc.douyinpic.com/aweme/720x720/aweme-avatar/..., sub_comment_count: 165, last_modify_ts: 1711644156003 }2.1 评论主体字段字段类型含义comment_idstring评论唯一 ID抖音雪花 ID 格式长度 19 位aweme_idstring所属视频 ID用于将评论归属到具体视频contentstring评论正文抖音表情以[流泪]、[赞]等占位符形式内嵌在文本中create_timenumber评论创建时间Unix 秒级时间戳ip_locationstring评论者 IP 属地如四川用于展示IP 归属地sub_comment_countstring该评论下的楼中楼子评论数量注意此处为字符串类型2.2 互动状态字段字段类型含义digg_countstring评论点赞数字符串类型展示时需转数字或做千分位格式化user_diggednumber当前用户是否已点赞0/1驱动点赞按钮的激活态is_author_diggedboolean作者是否点赞了该评论用于展示作者赞过标签is_hotboolean是否为热门评论决定其是否进入热门评论区is_foldedboolean是否被折叠如含违规内容被折叠展示user_buriedboolean用户是否已屏蔽/折叠该评论前端会据此将内容置灰2.3 用户信息字段字段类型含义user_idstring用户内部 IDsec_uidstring用户安全 ID加密后的 UID用于对外分享/跳转个人主页short_user_idstring用户的短 ID即抖音号展示形式user_unique_idstring用户唯一标识自定义抖音号可能为空字符串nicknamestring评论者昵称avatarstring头像 CDN 地址URL 中aweme/720x720表明为 720px 尺寸头像user_signaturestring用户个性签名可含换行符JSON 中为\n转义2.4 时间戳字段字段类型含义last_modify_tsnumber数据最后修改时间毫秒级时间戳如1711644156003对应 2024-03-28与create_time的秒级单位不同解析时需注意区分三、数据流水线从原始抓取到静态数据文件3.1 生成脚本 node/comment/process.js评论数据并非手工整理而是由 Node.js 脚本从原始抓取结果中按视频 ID 过滤生成。脚本核心逻辑如下let read ./data/detail_comments_2024-03-29.json let video_ids [ 7260749400622894336, // ... 共 16 个视频 ID 7267478481213181238, // ... ] let saveFileStr fs.readFileSync(read, utf8) let data JSON.parse(saveFileStr) video_ids.map((v) { let video_comments data.filter((a) a.aweme_id v) console.log(v, v, c, video_comments.length) fs.writeFileSync(./video_id_${v}.json, JSON.stringify(video_comments, null, 2)) })该脚本的流程非常直观读取原始数据从./data/detail_comments_2024-03-29.json2024-03-29 抓取的评论明细快照读取全量评论按视频过滤遍历video_ids数组中的 16 个视频 ID用data.filter((a) a.aweme_id v)筛出属于该视频的评论并打印数量用于核对本视频对应c 40落盘输出以video_id_${v}.json命名写入格式化null, 2缩进的 JSON 文件保证可读性。3.2 从 JSON 到.md压缩存储生成脚本输出的是明文 JSON而 public/data/comments/ 下的 16 个.md文件均为 7-Zip 压缩格式。可以推断项目在发布静态资源前会对这批 JSON 数据做压缩处理以减小体积并统一改用.md扩展名存放这样前端 Mock 既能按静态资源路径访问数据又对直接浏览者保持半隐藏状态。无论存储形态如何数据本体始终是符合上述 Schema 的 JSON 数组这也是前端可以无缝消费的前提。四、前端消费链路Mock 拦截 → API 封装 → 评论面板4.1 Mock 层src/mock/index.ts项目通过axios-mock-adapter拦截/video/comments请求。核心逻辑为mock.onGet(/video\/comments/).reply(async (config) { const videoIds [ 7260749400622894336, // ... 与 process.js 完全一致的 16 个视频 ID 7267478481213181238, // ... ] let id config.params.id if (!videoIds.includes(String(id))) { id videoIds[random(0, videoIds.length - 1)] // 未知视频 ID 随机兜底 } const r2 await _fetch(${FILE_URL}/comments/video_id_${id}.md) const v await r2.json() if (v) { return [200, { data: v, code: 200 }] } return [200, { code: 500 }] })几个值得注意的实现细节白名单校验videoIds数组与生成脚本process.js中的列表完全一致若请求的视频 ID 不在白名单内则随机返回一个已有数据集的评论保证任何视频详情页都能展示评论按需拉取通过${FILE_URL}/comments/video_id_${id}.md动态拼接路径只请求当前视频对应的数据文件而非一次性加载全部 16 份直接解析r2.json()把响应体按 JSON 解析因此部署环境中该文件内容必须是合法 JSON 文本解析成功即包装为{ data: v, code: 200 }返回失败则返回code: 500。4.2 API 封装src/api/videos.ts页面层不直接触碰 Mock而是通过统一 API 函数调用export function videoComments(params?: any, data?: any) { return request({ url: /video/comments, method: get, params, data }) }videoComments(params)以 GET 方式请求/video/commentsparams.id即视频 ID会被 Mock 拦截器消费。这种页面 → API 封装 → Mock 拦截 → 静态数据文件的层级使得后续接入真实后端时只需移除 Mock页面代码零改动。4.3 评论面板渲染src/components/Comment.vueComment.vue 是基于from-bottom-dialog底部弹层的评论面板组件它逐字段消费了上述数据模型对应关系如下数据字段组件中的渲染逻辑comments.length弹层标题展示{{ _formatNumber(comments.length) }}条评论avatarimg头像经_checkImgUrl(item.avatar)校验/补全图片地址nickname评论者昵称展示content/user_buried展示正文若user_buried为真则内容置灰并显示该评论已折叠create_timeip_location_time(item.create_time)格式化时间并拼接· 四川形式的 IP 属地digg_count点赞数经_formatNumber(item.digg_count)千分位格式化后展示user_digged驱动点赞图标切换icon-park-solid:like实心 /icon-park-outline:like空心点击后调用loved(item)切换点赞态user_buried右侧折叠操作点击后通过item.user_buried !item.user_buried切换折叠态可以看到面板的时间 属地、点赞数、折叠态、点赞交互等能力全部由第一节的数据模型直接驱动数据与 UI 一一对应。五、从数据看内容一份可复用的评论数据范式这份数据集除了作为 Demo 数据还提供了一个很有价值的参考如何用一份静态 JSON 支撑完整的评论功能体验。分层充分作者置顶、热门评论、普通评论三级结构天然存在作者评论在数组首位、is_hot标记热门前端可据此实现精选评论与全部评论的 Tab 切换字段完备从评论内容、点赞、折叠到楼中楼计数、用户档案、IP 属地一应俱全覆盖了短视频平台评论区的核心信息维度成本极低通过 node/comment/process.js 的过滤脚本 静态文件托管无需后端即可在 Vue 3 Demo 中呈现近乎真实的评论体验这也是本项目仿抖音最佳实践定位在数据层的一个体现。六、延伸阅读数据文件video_id_7267478481213181238.md7z 压缩 JSON与明文对照 video_id_7267478481213181238.json同目录其余 15 组评论数据集public/data/comments生成脚本node/comment/process.jsMock 拦截实现src/mock/index.tsAPI 封装src/api/videos.ts评论面板组件src/components/Comment.vue如需在本项目基础上扩展评论功能如新增作者赞过标签、楼中楼加载、评论时间相对化上述文件即为完整的改造入口。【免费下载链接】douyinVue3 Pinia 仿抖音Vue 在移动端的最佳实践 . Imitate TikTok Vue Best practices on Mobile项目地址: https://gitcode.com/GitHub_Trending/do/douyin创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考