一些背景
我使用一个基于前端组件的UI框架,该框架完全通过jQuery管理其UI。在最初创建它时,这听起来并不疯狂,jQuery是制作交互式web组件的稳定的逻辑选择。然而,现在手动跟踪每个变量和数据的每一个变化,然后在DOM中反映这一点,不再是唯一可行的选择。随着框架的发展,维护一致的代码风格和代码效率的负担也随之增加。
我最近一直在查看Maquette.js,看起来它可能只是帮助解决这些挑战的框架等等。
问题
我知道如何使用this技术与其他库进行集成。然而,我的框架是大的,许多人依赖它,它是不可行的转换我们所有的渲染为大。至少不是在一次猛扑中。正因为如此,如果我确实使用了Ma成品,我就会预见到自己会被迫在组件的每一个实例中使用新的投影仪。这就是我所关心的。
与使用单个投影仪渲染所有东西相比,页面上有大量的投影仪会对性能产生负面影响吗?换句话说,就性能而言,是否应该将页面上的投影仪数量降到最低?
如果代码有帮助的话,我已经修改了马奎特主页中的简单示例,以说明这一点。1000台放映机一次运行。这看起来很好,但感觉好像我在做一件马奎特不想做的事。
document.addEventListener('DOMContentLoaded', function () {
var h = maquette.h;
var domNode = document.body;
var yourName = ''; // Piece of data
var numbers = [];
// Load up our array
for(var i = 0; i < 1000; i++){ numbers.push(i); };
numbers.forEach(function(){
var projector = maquette.createProjector();
// Plain event handler
function handleNameInput(evt) {
yourName = evt.target.value;
}
// This function uses the 'hyperscript' notation to create the virtual DOM.
function renderMaquette() {
return h('div', [
h('input', {
type: 'text', placeholder: 'What is your name?',
value: yourName, oninput: handleNameInput
}),
h('p.output', ['Hello ' + (yourName || 'you') + '!'])
]);
}
projector.append(domNode, renderMaquette);
});
});
发布于 2017-02-02 23:47:18
问得好。投影仪重量轻,而且是被动的。如果您同时调用所有1000个投影机上的scheduleRender,我只会看到一些性能损失。这意味着每个投影机都会调用requestAnimationFrame。如果您只同时在几个投影机上调用scheduleRender,则开销应该是最小的。
https://stackoverflow.com/questions/42014011
复制相似问题