如果表单包含回调函数,则它不可移植 笔记

如果表单包含回调函数,则它不可移植

真正的可移植表单形式不仅需要 JSON 序列化,其验证逻辑、条件判断和提交逻辑也必须具备可移植性。标准表单库通常将行为嵌入回调中,导致其不可移植,不适用于后端生成或多应用场景。尝试将回调序列化为源代码或发明紧凑的领域特定语言(DSL)会引入显著的安全与维护风险。相反,应通过可序列化的表达式树以声明式方式表示行为。这种方法支持可检查、可版本化且独立可验证的数据结构。虽然原始表达式树较为冗长,但类型化的作者 API(如 TypeScript 构建器)可以抽象这一复杂性,生成规范的 JSON 契约。该契约作为通用事实来源,使各种前端和后端能够一致地解释和验证表单。关键在于,必须谨慎处理位置集合,以避免在提交时静默改变数据身份。可移植表单系统还必须采用健壮的验证与安全机制,以安全地处理不可信输入,防止诸如灾难性回溯或无效配置等问题。Modyra 所探索的这一架构方法,将复杂性从单个应用转移至共享基础设施。其目标是确保在不同运行时中含义一致,而非渲染一致。核心挑战在于确定有多少行为可以编码为可移植数据,同时避免使契约过于复杂。