J'ai vu cela et j'ai trouvé que ça avait l'air plutôt sympa, alors j'ai fait quelques tests dessus.
Cela peut sembler une approche propre, mais en termes de performances, elle est en retard de 50% par rapport au temps qu'il a fallu pour charger une page avec la fonction de chargement jQuery ou en utilisant l'approche javascript vanille de XMLHttpRequest qui étaient à peu près similaires les unes aux autres.
J'imagine que c'est parce que sous le capot, il obtient la page exactement de la même manière, mais il doit également gérer la construction d'un tout nouvel objet HTMLElement.
En résumé, je suggère d'utiliser jQuery. La syntaxe est à peu près aussi facile à utiliser que possible et elle comporte un rappel bien structuré que vous pouvez utiliser. C'est aussi relativement rapide. L'approche vanille peut être plus rapide de quelques millisecondes imperceptibles, mais la syntaxe est déroutante. Je n'utiliserais cela que dans un environnement où je n'avais pas accès à jQuery.
Voici le code que j'ai utilisé pour tester - il est assez rudimentaire mais les temps sont revenus très cohérents sur plusieurs essais, donc je dirais précis à environ + - 5ms dans chaque cas. Les tests ont été exécutés dans Chrome à partir de mon propre serveur domestique:
<!DOCTYPE html>
<html>
<head>
<script src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
</head>
<body>
<div id="content"></div>
<script>
/**
* Test harness to find out the best method for dynamically loading a
* html page into your app.
*/
var test_times = {};
var test_page = 'testpage.htm';
var content_div = document.getElementById('content');
// TEST 1 = use jQuery to load in testpage.htm and time it.
/*
function test_()
{
var start = new Date().getTime();
$(content_div).load(test_page, function() {
alert(new Date().getTime() - start);
});
}
// 1044
*/
// TEST 2 = use <object> to load in testpage.htm and time it.
/*
function test_()
{
start = new Date().getTime();
content_div.innerHTML = '<object type="text/html" data="' + test_page +
'" onload="alert(new Date().getTime() - start)"></object>'
}
//1579
*/
// TEST 3 = use httpObject to load in testpage.htm and time it.
function test_()
{
var xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = function() {
if (xmlHttp.readyState == 4 && xmlHttp.status == 200)
{
content_div.innerHTML = xmlHttp.responseText;
alert(new Date().getTime() - start);
}
};
start = new Date().getTime();
xmlHttp.open("GET", test_page, true); // true for asynchronous
xmlHttp.send(null);
// 1039
}
// Main - run tests
test_();
</script>
</body>
</html>
load_home(); return false