杂谈
很久没来逛一逛社区了,看到很多热心网友都开始在做插件了,部分网友反馈技术参差不齐,希望有一个统一的插件市场。
感觉确实是一个不错的建议,如果能够充分发挥开发者的作用,而且有一定的审核、发布机制,确实可能会让这个主题更强大。甚至可以做一个会员制的,每年推出10-20款插件,有了AI的加持,我觉得都是很轻松的。
现在有了Cursor、Claude Code、Codex这些编程工具,几乎一个很复杂的功能可能1-2天就能做完并上线。
实践
去年12月左右忽然心血来潮,想试试能不能依据现有的wordpress和zibll的数据表,用Go + React技术栈做一次重构。
差不多前几天上线了下,说实话,因为我只是用了部分的单元测试,并没有每个页面都去点击、都进行测试,所以bug还是非常多的。跟老唐这么多年的积累还是有很大差距的,但是我认为这个思路或许可以帮助各位做一些有意思的事情。
不过,我觉得有bug的情况下,ai根据描述和报错的日志都可以非常快的完成修复。这里唯一一个大坑就是微信登录,如果不做代理的话没法接收微信的通知,所以调试起来还是非常麻烦的,要在线上才能测,所以只好硬上了,然后一点一点修。
做完整个前后端之后,粗略的统计了下,有547个接口。

代码具体情况如下
-------------------------------------------------------------------------------
Language files blank comment code
-------------------------------------------------------------------------------
TypeScript 834 15422 15867 159264
Go 1173 19111 17322 125975
CSS 275 9281 3325 54314
SCSS 52 698 297 4376
JavaScript 311 187 125 4061
SVG 39 86 0 2743
Markdown 12 459 0 1873
JSON 6 5 0 1837
SQL 19 98 170 436
HTML 4 27 7 394
XML 5 0 0 291
Python 13 178 462 233
YAML 8 23 41 167
make 3 20 14 69
Dockerfile 1 3 6 7
Bourne Shell 1 6 1 1
-------------------------------------------------------------------------------
SUM: 2756 45604 37637 356041
-------------------------------------------------------------------------------
复刻、重构的基本思路
你可以直接把老唐的主题代码放到一个文件夹里,然后你想做什么,就直接跟AI说,比方说我想实现一个社区板块的功能,请参考zibll的代码,之后使用plan模式进行设计,再核对完准确的需求后,就可以开始build了。复刻完整的就是每一个功能模块进行plan,然后build,最后整合到一起。当然,你也可以跟chatgpt之类的进行头脑风暴,在多轮对话后,输出一个较好的设计方案,这里有一个技巧,就是你每次对话完成后,你一定要追问一下,比方说,现在性能是不是最强了?现在的设计是不是最佳了?它一定还会提出新的可优化的地方,然后你就进一步让他补充,或者你让他给方案打分,打分的时候存在缺陷的,你就可以让它进一步完善,一步一步的拿到最佳的方案。
一些具体可供借鉴的地方
下面分享一些我觉得可以借鉴的地方。
技术栈
- 后端:Golang(使用的goframe框架,实在是太舒服了,基本上有点像php的Laravel、java的SpringBoot)
- 前端:React(使用的Vite.js + antd UI)
- 数据库:Postgres SQL(我把数据库从MySQL转成了PGSQL,里面的向量的插件非常舒服,支持全文搜索)
鉴权方式(JWT+refresh_token)
目前老唐这边用的cookie、session,我看在数据表的user_meta表里键为session_tokens的存储了每个用户的session信息,理论上基于这个可以做一些扩展,比方说获取用户的登录状态。我这边使用了Json web token的方式,在数据库中存JWT的session_id,并且使用refresh_token的方式,每10分钟重新颁发一次令牌,可以防止一些恶意采集或者持久化复用同一个令牌的用户。具体细节可以后面单独分享一篇文章。
实时聊天/通知
一定要用websocket!可以让你的实时聊天、通知消息即时刷新,让用户体验更好。

关注列表
其实很多时候用户需要一个专门的位置来显示,自己关注的内容,包括关注的人、关注的板块等等,聚合在一起,可以更方便用户去阅读。

人机验证(capjs)
目前老唐的验证码接入了腾讯云、极验等第三方验证码平台,但我一直觉得还是越简单粗暴越好,然后就看到了类似POW(proof of work)的验证方式,相当于就是用js在浏览器里让你使用你的性能来计算challenge。
开源里做的最好的就是capjs和altcha,因为capjs的体积更小,我选择了前者,我在中间件中增加了验证的一层,然后我在一些关键位置设置了强制调起capjs的人机验证,比方说短信、手机获取验证码,其他的业务场景根据频繁出现错误码的情况,触发阈值才显示人机验证。

然后对于一些异常的业务,我在后台进行了记录,这样可以更好的复盘。goframe支持open telemetry,具备较好的可观测性,相当于我们可以通过trace_id和我们日志里调用的堆栈信息进行比对,如果有一些报错,可以很快定位到代码出现问题的地方。

搜索功能(jieba分词+全文搜索)
我看老唐在之前的文章中也讲了,引入了meilisearch,确实是个不错的思路,但是我觉得为了能够更好的获取用户的搜索意图,可以使用jieba之类的分词工具,把用户搜索内容进行拆分,然后再去搜索,这样搜索出来的结果会更丰富。再配合PGSQL的全文搜索,速度非常快!
第二个我觉得可以做的就是,一定要把结果都聚合起来,让用户能够一键搜索到多元的信息。

视频播放器(plyr)
目前老唐这边用的dplayer,理论上目前是够用的,但是为了能够使用更多的功能,比方说加载字幕文件、倍速播放、选择视频质量、时间轴等诸多功能,我引入了plyr播放器,这个是目前youtube等使用的播放器,我个人感觉还是蛮舒服的。
而且我还添加了一个比较细节的功能,那就是把用户观看视频的进度存到localstorage里,这样用户下次再进来观看视频时,可以直接切换到原来的位置。

编辑器(tiptap)
目前老唐这边用的是tinymce,本质上是富文本编辑器。
如果想有wordpress古腾堡编辑器这种体验,我们还是要选择一块支持区块编辑的,然后我搜了搜,最后选择了tiptap。它会把输入转成json格式,用节点方式显示,最后我们在发布时再做一次转化就好了。看下效果

我认为基本上跟wordpress差不多了,可以直接在区块里操作,做到可视化的编辑,重点这是前台,不是后台。

当然,卡片也是可以直接嵌入进来的。

本来以为区块的节点编辑就已经够了,后面为了复刻wordpress,我还添加了一个自动保存草稿、历史版本恢复的功能,对于一些想更加专注于文章编辑的,我认为是很有必要的。

代码块解析
评论区的代码块可以试一试使用Codemirror,这是一个非常轻量级的代码插入模块,支持一些简单的代码补全和高亮。

公众号的基本功能
其实公众号的一些基本功能也可以接入进来,比方说关键词回复、菜单的配置,我目前只是做了非常简单的功能。但是我觉得能够集成在一起其实对用户是非常友好的


其实关键词这块可以做一些深挖,比方说匹配不到关键词时,可以用接口来返回文章内容链接等等一系列的。










