Wed Aug 09 2023
...
评论菜单更新
! 本文包含技术术语
新内容
一些FastComments租户自定义了评论小部件。这在您的自定义与我们的实现之间创建了一个契约。我们尽最大努力不破坏此契约,但作为此次公告的一部分,我们有一个小的破坏性更改。
对于开发者
评论菜单的CSS选择器已更改。
旧:
.comment .menu .menu-content
新:
.menu-content
现有租户
如果您已经在使用“menu-content”选择器 - 恭喜您!我们已经检查了所有使用此选择器的租户,并更新了他们的小部件配置,以防止出现问题。
如有任何问题,请告诉我们。
理由
自从创建评论小部件以来,评论菜单完全是一个由CSS驱动的下拉菜单。这是一种简单快速的实现下拉菜单的方法,而且不需要太多代码 - 这是FastComments的设计目标。
然而,多年来它出现了一些问题。
首先,当评论区域有特定高度且可滚动时,例如在流式聊天中,访问底部的菜单很困难,因为菜单会试图超出可滚动内容区域。这使得部分菜单不可见,并且需要您移动鼠标并重新悬停在菜单上,以完成您刚刚试图进行的工作。我们认为这让人使用起来感到沮丧。
曾经有一些变通方法,例如将菜单方向向上翻转,但如果小部件高度不够高且菜单中有很多操作项(例如对于管理员而言)时,这也不起作用。在这种情况下,理想的情况是在可滚动内容区域之外下拉菜单。
尺寸优势
这个变化的一个好处是,我们能够将大量代码抽象为异步加载的模块。这将允许我们在不使小部件的初始加载变得臃肿的情况下,扩展您可以对评论数据采取的操作。这会在您第一次悬停在编辑菜单上时引入网络请求,但初始包非常小(< 1kb),因此这应该不会很明显。
继续发展软件并随时间减少其大小是非常困难的。通常,软件开始时快速而变得缓慢。因此,我们始终乐于努力让FastComments保持快速:
更改前:28.76kb gzipped(总计108.02kb)
更改后:28.39kb gzipped(总计105.79kb)
更少的代码意味着浏览器在页面加载时需要解析的代码也更少。随着更多功能的添加,这一点的影响将会扩大。
性能优势
旧菜单渲染所有菜单项,并加载所有扩展以查看扩展是否有要添加的项,并为每个评论渲染这些内容,以便内容随时准备好供您的鼠标使用。
通常只有30 - 100个对象,因此这并不太重要,但影响在不断增加。新的系统消除了这个顾虑,菜单现在仅在需要时渲染。
权衡是新的菜单使用JS进行定位和渲染,以实现我们想要的效果。我们将继续进行优化,但目前它的表现良好。
总结
感谢我们的客户耐心地实施这些更改。我们希望您继续喜爱FastComments。
干杯!
