首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Node.js
Express
PPA for Ubuntu
ppa:chris-lea/node.js
V2EX  ›  Node.js

纯 JS 代码实现一个评论系统

  •  
  •   metrue · 323 天前 · 4073 次点击
    这是一个创建于 323 天前的主题,其中的信息可能已经有所发展或是发生改变。

    去年多说关闭的时候心血来潮写了一个评论系统了自用。后来觉得维护自己的服务器太麻烦了,所以有心血来潮又重新基于 AWS lamda 重构了. 一百多行 JavaScript 完成了 API.

    GitHub: https://github.com/metrue/YoYo

    Blog: 打造一个自己的评论系统

    17 回复  |  直到 2018-06-06 10:16:50 +08:00
        1
    Braid   323 天前
    内容无法管控就没什么意义了
        2
    nine99   323 天前   ♥ 1
    不错,相比另外那些简洁很多
        3
    nine99   323 天前
    向你学习下 AWS lambda
        4
    yamedie   323 天前
    发现个角度刁钻的问题... 评论内容是根据页面 url 聚集的, 但如果 url 后面被一些浏览器追加了参数(比如微信的?from=singlemessage), 那么 url 有参数的文章和 url 无参数的文章, 评论区就会形成 2 个"平行宇宙"哈哈

    举个栗子:
    https://minghe.me/2017-04-18-YoYo:%E8%87%AA%E5%B7%B1%E6%89%93%E9%80%A0%E4%B8%80%E4%B8%AA%E8%AF%84%E8%AE%BA%E6%9C%8D%E5%8A%A1.html

    https://minghe.me/2017-04-18-YoYo:%E8%87%AA%E5%B7%B1%E6%89%93%E9%80%A0%E4%B8%80%E4%B8%AA%E8%AF%84%E8%AE%BA%E6%9C%8D%E5%8A%A1.html?0=1

    只有一个?0=1 的差别, 评论列表就会完全不一样哦~
        6
    yamedie   323 天前
    额 没打完就发出了, 如果 url 里带#footer 这样的锚点, 又会形成平行宇宙.

    另外这种方案没有人工审核和验证码, 怎么防止闷声作大死的敏感信息, 怎么防止类似 SQL 注入之类的脚本攻击?
        7
    koodai   323 天前 via iPhone
    @yamedie 源码 src 底下去自己扩展即可,现在的代码是取了当前页面的 url,你可以对这个参数做调整。
    比如在页面 header 里面预留一个识别 url 唯一性的参数值。
    非常简单
        8
    metrue   323 天前
    @Braid

    图方便直接使用 YoYo 部署好的。内容存储在 YoYo 的 aws 上。

    当然代码是开源,你也可以只部署一套,一个命令而已,所以的东西都在你自己管控下.
        9
    metrue   323 天前
    @yamedie 对的, @koodai 说的很对.

    不过确实是一个 bug,找时间修一下的。
        10
    metrue   323 天前
    @yamedie bug 已经修复并且部署了。
        11
    yamedie   323 天前 via Android
    @metrue 够快,有些 wordpress 默认没有开启静态化,url 比如 xx.com/?p=123,会不会造成新的困扰? 匿了。。
        12
    metrue   323 天前
    @yamedie 这要更加需求定制了。或者有什么我还没有想到的方法。
        13
    yamedie   322 天前 via Android
    @metrue 想到个粗暴的办法就是提供 2 个 js 让用户选 1 个用,一个是忽略 url 参数和锚点的,另一个是不忽略的(#锚点的话,因为有些单页应用用锚点做路由,这种情况也不能忽略)
        14
    yamedie   322 天前 via Android
    或者 1 个 js 也行,window 对象下放一个布耳值开关,开关为 false 或不存在就怎样,true 就怎样
        15
    metrue   322 天前
    @yamedie

    如果想做可以配置的话,直接把配置附着在 YoYo 的 div 节点即可, 比如类似这样:

    <div id="YoYo" data-yoyo-config-enable-fullpath="true"></div>
    <script src="https://yoyo-client-production.s3.amazonaws.com/dist/index.js"></script>
        16
    yamedie   322 天前
    @metrue 完美
        17
    Braid   322 天前
    @metrue 嗯,开源产品可能不需要关注这些问题,我说的管控是指的类似为什么多说评论系统关闭了,这些商业化的产品。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2577 人在线   最高记录 5043   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 17ms · UTC 14:28 · PVG 22:28 · LAX 07:28 · JFK 10:28
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1