我想实现一个在线文档编辑和更正平台。这可用作交互式单页 Web 应用程序。想想谷歌文档,但里面有更复杂的小部件。
我已经在 React (JS) + Node.js + Postgres 中完成了这个应用程序,这花了几个月的时间,但我不太喜欢 JS 体验,特别是当处理这种非常复杂的状态和提出的解决方案变得更加复杂时在这个框架中是非常严格的,并且在某处更改一些代码具有“高”维护。
我从来没有做过任何 Common Lisp 网络应用程序,但我已经阅读了很多关于可用工具的信息,尽管有很多网络服务器解决方案(hunchentoot、clack、wookie、woo、fastcgi、...)、网络应用程序框架(caveman、ningle、radiance、lucerne、...)、html 生成库(cl-who、spinneret、...)甚至 javascript“转译”(parenscript),我的主要限制是重点关注必须在客户端专门执行大多数操作的单网页应用程序。
建筑学:
- 后端服务器处理所有永久文档存储/检索和用户登录
- 前端在客户端执行所有文档操作(包括中间文档状态更改,无需将每个更改传达给后端)
核心需求:
- 完全动态的单页 Web 应用程序界面(内容主要是您正在编辑的文档)
- 可忽略的交互延迟
- 在主服务器上以尽可能低的负载扩展到许多用户
- 与文档的所有交互都应该发生在客户端(包括管理中间更改)
- 只有登录、拉取文档、推送新的最终文档状态或请求特殊操作(如文档信息的自动处理)时才应联系后端服务器。
- 现代浏览器体验,即支持文档编辑中拖放操作的 HTML5
库要求(我不想使用最终成为死胡同项目的库):
- 实体库(例如:hunchentoot、clack、parenscript)
- 当然不:
- 有人做过的库,然后有 3 年的开放错误,最后一次提交是 5 年前
- 糟糕的文档(这意味着如果不花费数小时或阅读库代码就无法弄清楚如何做事)
我还看到有像 slurm-cl、panic、weblocks 这样的项目,但前两个似乎不再被维护或缺少一些文档,而新的weblocks看起来不错,但据我了解运行服务器端,而不是客户端,这对我来说是一个限制。
百万美元问题
很抱歉这篇长文,但你能告诉我 Common Lisp 是否有任何用于这个用例的库 - 客户端脚本吗?可能吗?Parenscript 是否符合要求?(我假设如果我选择那个,我必须从零开始写大多数东西——这也不是我的目标)。此外,如果我使用 Parenscript,我假设它也不进行 DOM 管理。
或者我不应该为此使用 Common Lisp?