因为多说要挂了,所以 Spruche 进化了

2017-04-02 01:48:12 +08:00
 Cononico

之前用 Express 写的博客系统 Spruche (德语:“箴言”),因为偷懒,用了多说,前两个星期看见了多说要关闭的通知,吃惊秒,为多说默哀三秒后,意识到掌握核心技术的重要性。接下来抽空给系统写了个支持第三方登陆的 jQuery 评论框插件,同时也给她升了个级。

Spruche 拥有以下简单的功能与朴实的特性:

展示

默认主题直接丢个链接:默认主题

还是给个截图拉长以下 V2EX 的页面:

评论框上个截图。

有没有觉得很情切很眼熟,没错,样式是拿 B 站的。是的,就是在 Chrome 里按 F12 抄的样式(听说这里特别注重版权许可,我这么明目张胆地抄会不会被人打?会不会被被封号)。

评论框为啥要叫 Servant 这么中二的名字,因为是账号是从微博那边召唤过来的,就像是召唤英灵一样,对的,我就是你们的 master 。

别看样式是抄的,评论框该有的功能还是有的:登陆、点赞、踩之类的,迅速过一下配置参数。

var defaults = {
    placeholder: '请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。',
    wbAppKey: '',            // 新浪微博开发者引用 appKey
    commentAble: true,       // 是否可以发评论
    announcement: '',        // 评论框公告
    pageNumber: 10,          // 每页评论个数
    childrenNumber: 10,      // 子级评论每页个数
    threadKey: '',           // 页面唯一 key
    title: ''                // 页面标题
  };

后面做得比较搓,主要因为没时间,有时间也要偷个懒。

环境要求

因为楼主要用 async ,还要求 MySQL 拥有支持 4 字节 emoji 编码的 utfmb4 ,所以对环境的要求还挺高的:

评论框这么复杂后续也少不了 redis , mysql 跟不上节奏。

自定义

模版引擎用的是 ejs ,相关文档和接口定义后续整理。

写在最后,求颗星星: GitHub

4327 次点击
所在节点    分享创造
23 条回复
Trim21
2017-04-02 05:49:59 +08:00
呃....

install 后面是不是少了什么..
Trim21
2017-04-02 05:51:31 +08:00
@Trim21 好吧,我错了..大半夜意识模糊了.
Systemd
2017-04-02 06:50:12 +08:00
Sprüche ?
cocochan
2017-04-02 08:47:03 +08:00
franklinyu
2017-04-02 08:56:21 +08:00
协议已经是 Apache 了吧, README 没改
slixurd
2017-04-02 11:40:08 +08:00
鄙视 MySQL 是政治正确么...
你能跑到单表上亿的数据么,没有上亿的数据说什么 MySQL 跟不上节奏........
dphdjy
2017-04-02 11:51:15 +08:00
看图标加 star
garipan
2017-04-02 11:54:00 +08:00
23333333333333
chuanwu
2017-04-02 12:06:26 +08:00
楼主你想说的是 utf8mb4 吧?

还有我不太明白你说评论框这么复杂, mysql 跟不上节奏,你能说下具体的场景么?
Aspx
2017-04-02 12:33:40 +08:00
还好我这种用静态博客的不需要评论
Cononico
2017-04-02 12:36:52 +08:00
@slixurd 什么时候鄙视 mysql 了,不管你跑几个表单有几条记录,频繁改动的数据(比如几个人一直重复在哪里点赞踩)并不适合一开始就往数据库里直接搞。再比如新消息回复的队列,没必要往数据库里扔吧,这次读完了之后下次就不用了,用个 redis 有什么错。虽然博客系统可能没什么人点赞,但用先用缓存固定时间在导入 mysql 有什么错?合适的地方用合适的东西,再说明一下,没有鄙视 mysql ,否则我也不会用 mysql 。
Cononico
2017-04-02 12:48:39 +08:00
@chuanwu 对的,漏了个 8 。跟不上节奏,不是说他慢,毕竟一个博客请求很低看不出效果,说的是评论系统中有些地方不太适合直接往里面塞。如消息回复提醒队列,没必要又建一张中间表,那我又得同时操作几张表换来一个 length 可能为 0 的队列,实在有点麻烦,放在缓存中用起来也方便。另外用户读完了,这条记录也用不着了,我不能直接 delete 掉,这对表不好,我只能加个字段证明他没用了,后来一张表里记着一大列用不上的记录。
slixurd
2017-04-02 13:07:36 +08:00
@Cononico
数据量小用 MySQL 做消息回复提醒没什么不好的...
加个中间件只会引入额外的复杂度
合不合适不能只看功能...
我觉得 SOA+RPC+服务发现也是很合理的架构....
但是肯定不会在这个量级这个场景下去做.....
ivmm
2017-04-02 13:11:57 +08:00
如果单独把评论拿出来做,获得的关注度绝对会比整合后的一个博客系统高
ooTwToo
2017-04-02 15:14:20 +08:00
不错啊ꉂ ೭(˵¯̴͒ꇴ¯̴͒˵)౨”

坨坨肉的 http://comment.moe 也好用
jexb
2017-04-02 18:30:16 +08:00
node.js 是搞笑得
diefishfish
2017-04-03 15:49:58 +08:00
@ooTwToo #15 肉肉那个怎么获取文章评论数插入到文章页面里...他个懒癌不更新
hpu423
2017-04-03 20:28:45 +08:00
不错
ooTwToo
2017-04-04 10:04:50 +08:00
@diefishfish 啊?底部貌似有的
diefishfish
2017-04-04 10:46:59 +08:00
@ooTwToo #19 不不不我说的是单独获取出来放在文章标题下面的那种!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/352099

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX