分享一个简单(简陋?)的静态博客评论系统 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
ericwyn
V2EX    分享创造

分享一个简单(简陋?)的静态博客评论系统

  •  
  •   ericwyn 2018-12-18 11:49:15 +08:00 4621 次点击
    这是一个创建于 2497 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前言

    之前一直使用 Gitment 作为我自己博客的评论系统,然而 Gitment 还是有一些不足

    不过 Gitment 确实是一个非常好用的评论系统,使用 Github issue 也是非常方便的选择,然而因为自己的一些需求决定重新写一个小小的评论系统。

    Ponza

    Ponza 是一个非常小型的评论系统,使用 Go 编写,因此你只需要运行一个二进制文件,就能搭建一个评论服务器,开放评论接口,给你所有的网页使用。Ponza 也不需要依赖数据库,所有的评论数据使用 JSON 的格式存储在本地。另外浏览者无需登录就可以评论,具体的集成步骤如下

    • 下载或者编译出 Ponza 的二进制文件
    • 为一个域名生成一个 key (由此来允许这个网站跨域请求 Ponza 服务器的 API 接口,如果有多个网站要使用的话就生成多个 key )
    • 运行 Ponza 开启评论服务器
    • 在需要评论的页面前端当中引入一个 JS 文件和一个 CSS 文件
    • 选择页面里评论所在的 dom,配置 Ponza 服务器地址和 key

    不足

    当然 Ponza 不过是我花了小段时间写的,所以肯定是存在许多不足的,例如可能存在一些安全问题(应该增加对每个 IP 短时间内请求次数的限制),以及有一些功能上面的缺失(例如点赞、评论他人等),所以还是类似于玩具性质的存在,希望听听大家的建议进行改进

    地址

    项目的地址在 : https://github.com/Ericwyn/Ponza

    示例的地址在 : https://ericwyn.github.io/Ponza/static/index.html

    17 条回复    2018-12-27 16:51:42 +08:00
    ericwyn
        1
    ericwyn  
    OP
       2018-12-18 11:54:35 +08:00
    如果有谁想尝试一下但是不想自己开一个服务器的话可以联系我鸭~使用我的服务器给你的网站生成一个 key ~
    goodryb
        2
    goodryb  
       2018-12-18 16:38:32 +08:00
    看起来不错,评论及回复功能要有,不然没法使用
    ericwyn
        3
    ericwyn  
    OP
       2018-12-18 20:39:52 +08:00 via Android
    @goodryb 因为数据存储只是存在 json 比较简单,没法做那么多的数据逻辑关联,评论的话估计只能用 at 某个人的形式来实现
    dimlau
        4
    dimlau  
       2018-12-19 12:49:42 +08:00
    参考一下 hashover
    @ericwyn
    dimlau
        5
    dimlau  
       2018-12-19 12:51:15 +08:00
    演示……可以看我的 blog 哈哈哈,比如:
    https://kaix.in/0001/like-father-like-son
    alex1504
        6
    alex1504  
       2018-12-20 10:59:56 +08:00
    @dimlau 写的真好!

    最早是看到了这句引用自是枝裕和《如父如子》书里的话,有些被触动,所以才开始读这本书。

    人总是会这样,在既定的轨道上浑浑噩噩,不懂珍惜,也不知足;直到巨变袭来,才开始留恋「往常」,但是这样可不行啊,如果没有敬畏,任何幸福都会再次成为习以为常,然后厌倦。所以其实对我来说,《如父如子》就是在讲如何敬畏、把握幸福。

    哪里有无缘无故的爱?亲情就是斩断退路的陪伴和支持。
    我们每个人都是第一次生而为人,没有什么资格认为自己做的就是对的。但是成年人从来都是缺乏耐心的,不管是对恋人还是子女,都很容易理直气壮地认为自己是对的、别人应该听自己的、别人如果没让自己满意一定是别人有问题……所以,其实好像小孩子比成年人更懂得情感。父母做的不够好时,孩子也会包容、体谅。

    有时候我会想,是不是因为成年人太迷信所谓「我有选择权」?因为可以选择离开,所以对任何人的不满都表现变得有些「无情」反正我可以选择放弃你。甚至在《如父如子》讲述的故事里,父亲得知了自己一直不太满意的儿子并非亲生,竟然会下意识地说出「果然是抱错了」。

    成年人总把「人生中的过客」这种说法挂在嘴边,但是在孩子们的心里,却没有那么多复杂和刻意感伤的词汇。不管什么样的亲人、朋友,对他们来说大概都是一辈子无可替代的吧?没有「过客」这个概念,没有减法、没有替换,只有加法。因为一旦出现,就永远永远也抹不掉啊!

    当然,当然,每个人都有权利选择离开让自己失望的人,但是这世上没有无缘无故的爱。如果一直抱着随时可以放弃的心态,又怎么能建立起真正的情感羁绊呢?即便是亲情,作为维系的,也不是血缘啊,而是斩断了退路、坚定不移的长期陪伴和支持。
    shawndev
        7
    shawndev  
       2018-12-20 12:20:44 +08:00
    @dimlau 域名好棒!中文排版也好棒!
    dimlau
        8
    dimlau  
       2018-12-20 15:30:11 +08:00
    @alex1504
    @shawndev

    谢谢,已脸红
    xiusheji
        9
    xiusheji  
       2018-12-20 17:48:31 +08:00
    没有验证机制吗?现在灌水的有点多
    dadachen1997
        10
    dadachen1997  
       2018-12-21 09:43:42 +08:00
    @dimlau 哇,请问这个博客引擎是开源的吗?可不可以分享一下具体的架构?
    ericwyn
        11
    ericwyn  
    OP
       2018-12-21 10:27:01 +08:00
    @xiusheji 主要是考虑到需要所有人都能够简单的进行回复,所以没有做什么高级的验证,现在只是加了限制,在短时间内不能大量回复而已,不过验证的话有什么好的想法可以分享一下么?例如加图形验证码?
    ericwyn
        12
    ericwyn  
    OP
       2018-12-21 10:27:21 +08:00
    @dimlau 好的~谢谢~
    metrue
        13
    metrue  
       2018-12-21 18:59:17 +08:00 via iPhone
    之前写过一个过一个 serverless 的,https://github.com/metrue/YoYo
    SomeBottle
        14
    SomeBottle  
       2018-12-22 21:25:46 +08:00
    在没法确保评论框服务商稳定性的情况下拥有属于自己的评论框还是蛮不错的
    ericwyn
        15
    ericwyn  
    OP
       2018-12-23 11:24:44 +08:00 via Android
    @SomeBottle 用自己的服务的话可控性会很高啊~而且数据就那几个 json 文件而已~可以随时备份、迁移、导入~
    etnperlong
        16
    etnperlong  
       2018-12-23 17:11:17 +08:00 via Android
    来为大佬点个 star !
    godbmw
        17
    godbmw  
       2018-12-27 16:51:42 +08:00
    路过点赞,不过还是推荐一下 Valine
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2518 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 10:05 PVG 18:05 LAX 03:05 JFK 06:05
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86