支持 noReverse
Closed this issue · 1 comments
harttle commented
目前 san-ssr 中有部分逻辑支持了“san 作为模板引擎使用”。但实现很不一致,主要包括两个功能:
- noTemplateOutput 支持不输出顶层 Template #34 。
- noDataOutput(运行时参数)还被用来控制是否输出
<!--s-text-->
。这是此前的错误设计,不输出数据不意味着不反解(数据可以不从 DOM 上来)。
现在提出一个新的开关 noReverse
,默认为 false
。为 true
时不输出任何反解用途的标记(基本都是注释)。由于干掉了 noTemplateOutput,对使用者而言是一个 BREAKING CHANGE。需要做下面的事情:
- 把
noTemplateOutput=true
替换为noReverse=true
- 根据 #53 ,把不需要输出的 template 改成了 fragment
- 如果你没用过 noTemplateOutput,但不希望输出
<!--s-text-->
,此前是用noDataOutput
控制的,现在需要设置noReverse=true
下面说明一下“san 作为模板引擎使用”的几个有用场景:
- 历史代码迁移。从其他非 HTML 安全的模板引擎迁移到 san 时,存在大量的 HTML 内容拼接,比如 JS 代码拼接(从模板数据生成 JS 代码中的变量)。
noReverse
可以让这些代码可以平迁。 - 拼接 pre、code、textarea 等类型的内容时,也需要支持不输出反解注释。
harttle commented
经线下讨论,参数名由 noReverse 改为 ssrOnly。