最近,闲着没事,又把上个月写得代码拿出来了,随便完善一下没完成的评论的路由接口。 评论应该是在整个博客数据存储中,模型最为复杂的一部分了。首先要考虑的是和文章进行关联。...这个可以用 mongoDB 的 ref 进行关联,随后可以使用 populate 计算出被关联的字段。 最后关系复杂的是父子层级的评论,又或者是多级评论。...这个时候就要想该怎么做才能合理的管理这些层级关系,在删除父评论的同时又能把所有子评论一起删除。查询的时候如何去由根到叶顺序输出层级关系。...post列中关联引用表(post表)的 _id(文章),在 hasChild 中记录是否存在回复。...如 post 中的一篇 pid 为 11 的文章下有一条评论,那么 key 中命名 11#001,这是第一条评论,如果该评论下存在一条回复,则回复的 key 为 11#001#001,下层亦是如此。
elseif theme.gitalk.enable %} {% endif %} 3 修改配置文件 在*/_config.yml中增加以下内容...: gitalk: enable: true #用来做启用判断可以不用 owner: #Github 用户名, repo: #储存评论issue的github仓库名 admin: #Github...clientID: #`Github Application clientID` clientSecret: #`Github Application clientSecret` 4 查看效果 部署代码后,访问博客页面...第一次访问需要登陆,github账号。...之后就可以使用评论了: ? 到这里,gitalk插件就添加成功了。 本文作者:foochane 本文链接:https://foochane.cn/article/2019052801.html
项目描述 截图 这个项目已经很久没维护了, 我后期使用了 NextJS API 以省去额外多部署一个服务的麻烦, 以下内容多数应该还能用不过仅供参考 项目描述 这是一个 Disqus 代理评论框...使用指导: Github 截图 评论框样式 图片 评论层级回复样式 图片 评论分页功能 图片
设计嵌套评论数据库表可仿效无限级分类,在表中加一个ParentId字段。...嵌套评论页面大致这样: 评论1 回复评论1 恢复评论1 评论2 回复评论2 评论3 …… 但是, 在显示评论的时候,如果使用ParentId会涉及到多表的联结,嵌套层级越多意味着表之间的联结增多...于是,我们想到在表中增加一个字段,用来显示所有的层级:/1/2/5/ 设计数据库和表: create database NestedCommnets use NestedCommnets Create...Content nvarchar(100) not null, Depth smallint not null, Thread nvarchar(max) not null ) 往数据库表中添加如下数据...--STR(nExpression [, nLength [, nDecimalPlaces]])返回与指定表达式对应的字符串 --nLength,返回的字符串长度;nDecimalPlaces,返回字符串的小数位数
前言 静态博客跟传统博客不一样,没有自带评论系统。...以 PHP + Mysql 为代表的 Wordpress 这类动态博客,天然带有数据库存储评论,而且博客前后端本地进行数据交互,提交评论、渲染评论都很快。...GitHub 类评论系统也有 Disqus 一样的网络问题,在境内访问 GitHub 极度不稳定。...但是慢慢发现评论越来越少,有需要咨询问题的朋友宁愿通过邮件或者 QQ 这些途径联系,也不会在博客上留言讨论。这让我开始反思评论系统的选择了。...作者每天晚上和周末都提交了很多 Commit,版本也在快速迭代中。 在使用体验上,这三者的差别都不大,主要体现在前端 UI 不同和加载速度上的轻微差别。安装方式也是一模一样。后端部署也都有保姆教程。
他的这篇文章总结的很全,但是对于每一个评论还欠缺细致的描述,这篇文章下我会做些补充, # 之前用的 livere 关于博客的评论插件,在最开始的搭建博客之前就有过考虑和纠结,国内的评论界面浮夸流程繁琐...后来使用了 livere,韩国的产品,一开始被他简洁的界面方便的后台吸引,而且还支持各种移动 APP 登陆,微信、QQ 之类的。不过后来使用过程中缺点显现出来了。...# disqus 他唯一一个缺点就是被墙了,他要求每一个看你博客的读者都要科学上网才可以,对于我的博客来说,不仅仅是写一下技术文档,有时候会更新下照片、游记之类的,所以不想对读者有太高的要求。...对于我一个主打技术的博客来说确实不太适合,如果大家想写一写娱乐微博说不定适合你。...# Hypercomments 这个也是我最后选择的评论插件,同样也提供付费和免费的服务 免费版完全满足我的博客使用,没有发现以上一些第三方的缺点,同时界面也不错,唯一不足的就是新评论的邮件提醒不知道怎么调出来
1.这里推荐的评论功能插件为valine 官网:https://valine.js.org/ 注册登录网站:https://leancloud.cn/ 需要实名注册登记,可以使用支付宝来实名认证,很快的...(需要实名登记才能创建应用) 3.获取 appkey 和 appid 创建完成应用后,进入应用->设置->应用 key,找到相应的 appkey 和 appid。...4.配置主题文件_config.yml 搜索 valine,一般可看到如下,将 enbled:true, 并填写 appid 和 appkey(从 leancloud 中获取的 appid 和 appkey...activated by default. # To use it, activate the configuration item and set appId and appKey. # Valine 评论模块的配置.... 6.重启你的博客 大功告成!!
其中之一就是当你试图访问嵌套对象时,会遇到这个错误 Cannot read property 'foo' of undefined 在大多数情况下,处理嵌套的对象,通常我们需要安全地访问最内层嵌套的值。...但是,由于某种原因,user 中的 personal不可用,对象结构将是这样的: const user = { id: 101, email: 'jack@dev.com' } 现在,如果你在试着访问...做法是检查用户是否存在,如果不存在,就创建一个空对象,这样,下一个级别的键将始终从存在的对象访问。 不幸的是,你不能使用此技巧访问嵌套数组。...使用数组Reduce访问嵌套对象 Array reduce 方法非常强大,可用于安全地访问嵌套对象。...除了安全访问嵌套对象之外,它还可以做很多很棒的事情。
ignore_above": 256 } } } } } } } } ---- 需求: 被年龄是28岁的黄药师评论过的博客...#被年龄是28岁的黄药师评论过的博客 GET /website/blogs/_search { "query": { "bool": { "must": [ {...comments.stars": [ 4, 5 ], "comments.date": [ 2016-09-01, 2016-10-22 ] } object类型底层数据结构,会将一个json数组中的数据...---- Nested datatype 解决object查询不对的问题 引入nested object类型,来解决object类型底层数据结构导致的问题 ---- 修改mapping,将comments...改成31的呢 ? ---- score_mode ?
Artalk 简介:Artalk 是一款简洁的自托管评论系统,你可以在服务器上轻松部署并置入前端页面中。...简介:一款快速、简洁且高效的无后端评论系统。...官网:https://utteranc.es/ Disqus 简介:当前最大的第三方评论系统,需要访问国外网站 官网:http://disqus.com/ Waline 简介:一款基于 Valine 衍生的简洁...、安全的评论系统。...官网:https://waline.js.org/ 来必力 LiveRe 简介:一家来自韩国的评论系统 官网:https://livere.com/ 最后 还有一些倒闭的和没多少人用的就不在多介绍了..
背景 突发奇想,想让自己的 《前端进阶小书》拥有评论功能,于是开始了探索之路 实现之路 1....创建评论组件 Vuepress 默认 .vuepress / components 文件夹下的组件会全局注册, 因此我们创建一个 comment 组件 gittalk.css 请点击 这里 <template...', clientSecret: '你的clientSecret', repo: '你的仓库名称', owner: '你的用户名', //...使用评论组件 理论上,我们在每个 markdown 文件里直接加入这个组件即可,但是每次都添加有点麻烦,还是让 node 来帮我们吧 根目录创建 build 文件夹, 创建三个文件 addComponents.js...scripts, 先为每个 md 文件添加组件,然后打包,最后再一一删除 markdown 中的 comment 组件 "build": "node .
Symfony DomCrawler库是一个强大的工具,可以帮助我们在反爬虫应对中起到重要的作用。 1. 理解反爬虫的原理 在谈论如何应对反爬虫之前,我们首先要理解反爬虫的原理。...网站通常会采取一系列措施来防止爬虫程序的访问,其中包括: 验证码: 在访问某些页面时需要输入验证码,以确认访问者是人类而不是机器。 IP限制: 对于某些敏感页面,网站会限制同一IP地址的访问频率。...应用实例:获取动态加载内容 下面我们来看一个实际的例子,假设我们要从一个动态加载数据的网页中获取内容。我们可以使用Symfony DomCrawler库来实现这个功能。...= $crawler->filter('.dynamic-content')->text(); // 输出数据 echo $data; 在上面的代码中,我们首先引入了Symfony DomCrawler...在实际应用中,我们可以根据具体情况选择合适的反爬虫策略,并结合Symfony DomCrawler库来实现。
首先,过滤器中判断当前session是否为空,若为空则跳转到登录 然后,在控制器中方法(评论/访问)上可使用过滤器。
Symfony DomCrawler库是一个强大的工具,可以帮助我们在反爬虫应对中起到重要的作用。1. 理解反爬虫的原理在谈论如何应对反爬虫之前,我们首先要理解反爬虫的原理。...网站通常会采取一系列措施来防止爬虫程序的访问,其中包括:验证码: 在访问某些页面时需要输入验证码,以确认访问者是人类而不是机器。IP限制: 对于某些敏感页面,网站会限制同一IP地址的访问频率。...应用实例:获取动态加载内容下面我们来看一个实际的例子,假设我们要从一个动态加载数据的网页中获取内容。我们可以使用Symfony DomCrawler库来实现这个功能。...->filter('.dynamic-content')->text();// 输出数据echo $data;在上面的代码中,我们首先引入了Symfony DomCrawler库和GuzzleHttp库...在实际应用中,我们可以根据具体情况选择合适的反爬虫策略,并结合Symfony DomCrawler库来实现。
毕业后,从青岛回来,找工作去面试的时候,面试官都会问会不会微信小程序、vue、react 这三个中的一个。...三、为什么做这个博客网站 实习时有个同事,她有自己的博客网站,当时就想搞一个自己的个人博客,然后问了她的博客是怎么做的后,自己也去百度云买了个虚拟空间、看了下WordPress官网,经过几天摸索和百度,...做个人博客网站就是最好的选择,自己先在腾讯文档(可随时在网上编辑)里做表,然后逻辑业务搞清楚了,再开始做这博客网站。 四、关于此博客 做这个博客网站的时候,也遇到了一些问题,但经过百度一般也都能解决。...技术上遇到问题,花些时间都差不多能解决,但是自己在想着怎样设计自己的博客页面的时候,就会时不时的卡壳,也借鉴了很多人的博客网站的样式,终于磕磕碰碰的把自己的博客网站给做出来了。...关于后台博客管理系统部分截图 image.png image.png image.png image.png image.png 3、博客前端页面 用的也是 vue-cli 4.x构建的项目,但没有用UI
其主要思路就是访问页面时到对应的 LeanCloud 数据表中更新访问次数。不过暂时只能记录PV值。 从零开始引入计数代码 第一步 新增leancloud代码主体(lc_visitors.ejs),主要实现的是访问页面时leancloud访问数+1,并且返回该页面已有的访问量。...在执行 可去除循环 showTime(); } } {% endcodeblock %} 第二步 将leancloud代码主体(lc_visitors.ejs)引入到原来的主题模板中...if (theme.search && theme.search.enable) { %> ... ... ... ... {% endcodeblock %} 第三步 在原页面中插入显示访问量的代码段...错误主要出现在列表页面,因为会同时查询多篇文章的访问量,所以会导致触发429错误。
---- 示例 基于白话Elasticsearch58-数据建模实战_基于nested object实现博客与评论嵌套关系的数据 模拟数据 DELETE website PUT /website {...", "content": "我是花无缺,大家要不要考虑一下投资房产和买股票的事情啊。。。"...", "content": "2我是花无缺,大家要不要考虑一下投资房产和买股票的事情啊。。。"...ignore_above": 256 } } } } } } } } ---- 需求一: 按照评论日期进行...bucket划分,然后拿到每个月的评论的评分的平均值 GET /website/blogs/_search { "size": 0, "aggs": { "comments_path
[TOC] 0x00 Gitalk - 基于Github的评论系统 描述: 我想对于所有使用hexo、Hugo或者WordPress自建博客的博主来说GitTalk应该不陌生,GitTalk通过Github...的OpenAPI以及issues功能实现社区评论确实还是很方便的,除开对国内访问速度较慢就没啥毛病,但是考虑到新手朋友此处还是简单介绍一下。...1.快速介绍 描述: Gitalk 是一个基于 Github Issue 和 Preact 的现代评论组件。...对应Gitalk配置中的owner repo: "blogtalk", // 储存评论issue的github仓库名,仅需要仓库名字即可。...对应 Gitalk配置中的repo token: 'ghp_wnpWqL********6RIf0NR5iD', // 前面在Github中的 personal access token sitemap
给大家介绍一个博客评论神器,Valine。 本来hexo博客用的是gitment,我也非常喜欢,看着逼格就超高呀。无奈我用着bug略多,而且毕竟有github账户的小伙伴似乎并不多。...于是我就忍痛准备换评论系统。然后在最近刚刚加入的hexo博客群里,看见了一个神器。也就是本篇主人公——Valine.js。 具体配置就见如下的文章吧。它的定义—— 一款极简的无后端评论系统。...Valine -- 一款极简的评论系统 Valine官网 这个评论系统是基于LeanCloud的,大家应该对这个很熟悉,对,Hexo的博客阅读量统计也是它。官网网址如下,需要注册一个账户。...Leancloud配置 首先访问Leancloud官网https://leancloud.cn/ 有Github账号的小伙伴可以用Github账号进行登陆然后绑定邮箱就可以啦!...,需要在Leancloud 设置->安全中心 中打开 placeholder: 说点什么吧!
领取专属 10元无门槛券
手把手带您无忧上云