Perdita di memoria JavaScript con Vue JS e Velocity JS
-
20-12-2019 - |
Domanda
Ho lavorato con Velocity.js e VUE.JS e corse in una perdita di memoria.Fiddle del problema: puoi vedere un esempio in questo violino: http://jsfiddle.net/hran7/3/
$(function () {
var ExtVue = Vue.extend({
'template': '#template',
'replace': true
});
var currVue;
setInterval(function () {
var nextVue = new ExtVue();
nextVue.$appendTo($('body').get(0));
$(nextVue.$el).velocity({
'left': '0'
}, 0, callback);
function callback() {
if (currVue)
currVue.$destroy();
currVue = nextVue;
}
}, 10);
});
.
Ho usato la funzione Timeline di Chrome e ho notato che il numero di nodi DOM non diminuisce mai, anche quando formi una raccolta di rifiuti.Ho iniziato a tuffarsi nel profiler heap ma è un po 'sopra la mia testa.
Quando I US .animate()
invece di .velocity()
, i nodi DOM sembrano essere gant correttamente.
$(nextVue.$el).animate({
'left': '0'
}, 0, callback);
.
Sembra anche che la rimozione di Vue risolva anche il problema.Esempio: http://jsfiddle.net/yv6zr/1/ .
Cosa potrebbe causare questa perdita di memoria?
Soluzione
Risolto su Velocity.js GitHub Pagina:
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow