Backbone JS 视图非常“有用”,因为它们总是为您创建一个 DOM 节点,带有可配置的标签、id 和类。这是非常好的和包容的,但我发现它造成了一个不幸的情况:视图创建的 DOM 节点是一个隐藏的模板。
这对我来说在我们当前的项目中变得很明显,我们在前端和后端之间共享 Mustache 模板。使用 Backbone,当你想要一个看起来像这样的 DOM 时:
<section class="note">
<textarea>
...
</textarea>
<input type="button" class="save-button" value="Save">
<input type="button" class="cancel-button" value="Cancel">
</section>
您最终会创建如下所示的模板:
<textarea>
{{& content}}
</textarea>
<input type="button" class="save-button" value="Save">
<input type="button" class="cancel-button" value="Cancel">
但是现在您的模板与 Backbone 视图上的秘密根节点模板相关联,需要在服务器端复制该模板。DRY 封装就这么多!
setElement()
除了在渲染时使用渲染的模板外,我没有立即看到解决此问题的明显方法,但这会带来其他问题,例如必须在每个render()
.
你是如何解决这个问题的?