通过实践学习TDD:在Umbraco富文本编辑器中标记成员

💡 原文英文,约900词,阅读约需4分钟。
📝

内容提要

作者在构建系统时,为了在网站文本中提及Umbraco成员,扩展了Umbraco的TinyMCE富文本编辑器。通过AngularJS装饰器和TinyMCE的'autoCompleters'功能,实现了成员提及功能。使用Jest进行测试,并创建了MentionsManager类来管理提及逻辑,包括从后端获取数据并插入编辑器。尽管代码简单易变,但作者对UI与业务逻辑的结合方式仍有疑虑。

🎯

关键要点

  • 作者在构建系统时需要在网站文本中提及Umbraco成员。

  • 为了实现成员提及功能,作者扩展了Umbraco的TinyMCE富文本编辑器。

  • 使用AngularJS装饰器和TinyMCE的'autoCompleters'功能来实现提及功能。

  • 提及的格式为<mention user-id="1324" class="mceNonEditable">@D_Inventor</mention>。

  • 作者使用Jest进行测试,并创建了MentionsManager类来管理提及逻辑。

  • MentionsManager类负责从后端获取数据并插入编辑器。

  • 作者对UI与业务逻辑的结合方式存在疑虑,认为代码简单易变。

  • 在测试过程中,作者发现TypeScript编译器的严格性。

  • 作者实现了fetch和pick方法来处理提及的获取和插入。

  • 作者对Range接口的使用感到不确定,认为可能有更好的实现方式。

延伸问答

如何在Umbraco中实现成员提及功能?

通过扩展Umbraco的TinyMCE富文本编辑器,使用AngularJS装饰器和TinyMCE的'autoCompleters'功能来实现成员提及。

MentionsManager类的主要功能是什么?

MentionsManager类负责管理提及逻辑,包括从后端获取数据并插入编辑器。

在测试过程中,作者对TypeScript编译器有什么发现?

作者发现TypeScript编译器的严格性,要求在编译前使用所有添加的内容。

提及的格式是什么样的?

提及的格式为<mention user-id="1324" class="mceNonEditable">@D_Inventor</mention>。

作者对UI与业务逻辑的结合有什么疑虑?

作者认为代码简单易变,且UI与业务逻辑的结合方式不理想。

如何处理提及的获取和插入?

通过实现fetch和pick方法,fetch方法用于获取提及,pick方法用于将选定的成员插入编辑器。

🏷️

标签

➡️

继续阅读