Bunu gördüm ve oldukça güzel göründüğünü düşündüm, bu yüzden bazı testler yaptım.
Temiz bir yaklaşım gibi görünebilir, ancak performans açısından, jQuery yükleme işlevine sahip bir sayfanın yüklenmesi veya XMLHttpRequest'in vanilya javascript yaklaşımının birbirine yakın olduğu zamana kıyasla% 50 oranında gecikmektedir.
Bunun kaputun altında sayfayı tam olarak aynı şekilde aldığını, ancak aynı zamanda tamamen yeni bir HTMLElement nesnesi oluşturma ile uğraşması gerektiğine inanıyorum.
Özetle jQuery kullanmanızı öneririm. Sözdizimi olabildiğince kolay kullanımlıdır ve kullanmanız için güzel yapılandırılmış bir geri çağırma özelliğine sahiptir. Aynı zamanda nispeten hızlıdır. Vanilya yaklaşımı farkedilemez birkaç milisaniye ile daha hızlı olabilir, ancak sözdizimi kafa karıştırıcıdır. Bunu sadece jQuery'ye erişemediğim bir ortamda kullanırım.
İşte test etmek için kullandığım kod - oldukça ilkel ama zamanlar birden çok denemede çok tutarlı geri geldi, bu yüzden her durumda yaklaşık + - 5 ms kesin diyebilirim. Testler Chrome'da kendi ev sunucumdan yapıldı:
<!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