我有一个显示几位数据的ExtJS面板,需要经常更新。例如,显示DOW,NYSE,NASDAQ等当前市场价格的面板
考虑到数据会经常更新(至少每秒一次),更新数据字段的单个元素与每次使用XTemplate重新生成所有HTML的效率要高得多吗?
例如,如果我不重新应用XTemplate,它可能如下所示:
update: function(marketData) {
Ext.get('nasdaq-market-price-div-id').update(marketData.nasdaqPrice);
Ext.get('nyse-market-price-div-id').update(marketData.nysePrice);
//Repeat for all fields...
}
每次使用XTemplate相比,如下所示:
update: function(marketData) {
var tpl = new XTemplate('<div>{nasdaqPrice}</div><div>{nysePrice}</div>');
var html = tpl.applyTemplate(marketData);
Ext.get('market-data-div-id').update(html);
}
我喜欢使用XTemplate,因为它允许我将HTML(实际上是单独的文件)分开,并有助于代码的可读性/可维护性。 但是,有没有人知道每次重新应用模板是否会导致性能受到惊吓?我猜测有,但我希望能从“知情人士”中获得权威答案。< / p>
谢谢!
答案 0 :(得分:6)
我同意@timdev - XTemplate应该没问题(BTW非常快)。但是,我不会每次都从头创建XTemplate。我会做更多这样的事情:
update: function(marketData) {
// assuming that this is a class or some appropriate scope
if(!this.PriceTpl){
this.PriceTpl = new XTemplate('<div>{nasdaqPrice}</div><div>{nysePrice}</div>');
this.PriceTpl.compile();
}
this.PriceTpl.overwrite('market-data-div-id', marketData);
}
答案 1 :(得分:3)
根本不具有权威性,但我认为你可能会过早地进行优化。非X模板方法可能效率较低,但您有什么理由关心吗?
如果没有对某些不良行为的描述,这听起来像是在担心现在不存在的问题,很可能在将来永远不存在。
保持你的代码清洁,直到你有一个真实的,现实的理由,为了表现而使它丑陋。