我应该在我的Javascript游戏引擎中使用DOM片段作为Shadow dom吗?

| 我正在使用Engine1的名称为网络创建一个新的游戏引擎。我目前已经生产了一些原型。到目前为止,我已经能够: 使用画布映射精灵的透明像素。 将事件绑定到精灵的不透明像素。 以设定的fps开发游戏运行时。 在可变帧定时对精灵进行动画处理。 动画元素运动,两者 逐帧 以及基于帧的补间动画 我对自己的进步感到满意,但在不咨询DOM性能专家的情况下进一步前进似乎感到不自在。 当前,当创建一个元素时,将其附加到DOM片段后,我将其称为“阴影DOM \”。复制此\“ Shadow DOM \\” \ HTML的每一帧并将其插入页面的主体(或当前视图端口)。 之所以这样设置,是因为我可以在浏览器的一次重排中将所有内容添加到页面中。 我担心的是,即使仅更改页面的一部分,仍需要重排浏览器的内容,从而抵消了所获得的性能。 而且,事件绑定变得更加复杂。 有什么想法吗? 我应该使用\“ Shadow DOM \”吗? 有没有更好的方法来渲染大量元素? 有没有办法仅将\“ Shadow DOM \”中的差异复制到浏览器主体?     
已邀请:
替换大块的DOM可能很昂贵。通常,DOM是出现瓶颈的地方。最好跟踪要修改和更新的DOM的哪些部分。您可以在更新时将其转换为DOM的单独数据结构中执行此操作,也可以使用您所说的影子DOM。如果更改的幅度很大,那么最好使用影子DOM。如果它们很小(例如仅更新文本值),则使用单独类型的数据结构会更有意义。 无论哪种情况,都需要第三个对象来跟踪更改。 我很久以前写了《仙人掌模板》。您可以使用它将DOM结构与域对象绑定在一起,以使更新从任何一侧传播到另一侧。它会自动将事件附加到指定的位置(域中的键值路径和DOM中的html类名称)。它可能不是您要找的东西,但也许您可以从中得到一些想法。     

要回复问题请先登录注册