cssmagic / underscore-template

More APIs for Underscore's template engine.
10 stars 3 forks source link

完善template.remove()接口并添加单元测试 #15

Open Blueeye1015 opened 9 years ago

cssmagic commented 9 years ago

我想先问个题外话,你觉得什么时候会用到 template.remove() 这个 API?

cssmagic commented 9 years ago

好的,现在可以合了。不过还是想听听你的回答:

我想先问个题外话,你觉得什么时候会用到 template.remove() 这个 API?

Blueeye1015 commented 9 years ago

@cssmagic 其实这个问题我上个礼拜思考了很久。我一开始完善这个API的目的只是因为这个API留出来了却没有实现,我觉得有add就应该有remove就去做了。之后又深入思考了一下,觉得现在的代码是每次add和render之后会将数据添加到_cacheTemplate和_cacheCompiledTemplate之中,然后就不管它们了,用户无法操作或者修改cache中的数据,cache中的数据势必会越来越多(我觉得会影响性能)。所以无论是用来释放cache中的数据,还是用来让用户在必要时修改模板数据,我觉得增加一个remove的API还是有必要的。

cssmagic commented 9 years ago

从 API 的对称性上来说,似乎需要有一个 .remove()。但我又不是很确定它是否存在真实的使用场景。

比如,用户无法直接修改 cache,但可以通过重复 .add() 来覆盖同名模板(说到这里,我刚发现了 .add()一个 bug,无法做到完全覆盖,这个要修);用户无法清除 cache,可能导致性能问题——确实有这种可能,但我不确定什么量级才会出现性能问题。

在想清楚这些疑问之前,我没有实现 .remove() 这个 API。所以在合并这个 PR 之前,我也希望你可以想得更深入一些——找到足够的证据说服我,或说服你自己。