Ich habe das gesehen und fand es ganz gut, also habe ich einige Tests durchgeführt.
Es mag wie ein sauberer Ansatz erscheinen, aber in Bezug auf die Leistung liegt er um 50% zurück, verglichen mit der Zeit, die zum Laden einer Seite mit der jQuery-Ladefunktion oder zur Verwendung des Vanille-Javascript-Ansatzes von XMLHttpRequest benötigt wurde, die sich in etwa ähnelten.
Ich kann mir vorstellen, dass dies daran liegt, dass die Seite unter der Haube genau auf die gleiche Weise abgerufen wird, aber auch ein ganz neues HTMLElement-Objekt erstellt werden muss.
Zusammenfassend schlage ich vor, jQuery zu verwenden. Die Syntax ist so einfach wie möglich zu bedienen und hat einen gut strukturierten Rückruf, den Sie verwenden können. Es ist auch relativ schnell. Der Vanille-Ansatz kann einige Millisekunden schneller sein, aber die Syntax ist verwirrend. Ich würde dies nur in einer Umgebung verwenden, in der ich keinen Zugriff auf jQuery hatte.
Hier ist der Code, den ich zum Testen verwendet habe - er ist ziemlich rudimentär, aber die Zeiten sind über mehrere Versuche hinweg sehr konsistent zurückgekommen, sodass ich jeweils eine Genauigkeit von etwa + - 5 ms angeben würde. Tests wurden in Chrome von meinem eigenen Heimserver ausgeführt:
<!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