Tôi thấy điều này và nghĩ rằng nó trông khá đẹp nên tôi đã chạy thử nghiệm trên đó.
Nó có vẻ như là một cách tiếp cận rõ ràng, nhưng về mặt hiệu suất, nó bị tụt lại 50% so với thời gian tải một trang có chức năng tải jQuery hoặc sử dụng phương pháp javascript javascript của XMLHttpRequest tương tự nhau.
Tôi tưởng tượng điều này là bởi vì dưới mui xe, nó có được trang theo cùng một cách chính xác nhưng nó cũng phải đối phó với việc xây dựng một đối tượng HTMLEuity hoàn toàn mới.
Tóm lại tôi đề nghị sử dụng jQuery. Cú pháp là dễ sử dụng nhất có thể và nó có một cuộc gọi lại có cấu trúc độc đáo để bạn sử dụng. Nó cũng tương đối nhanh. Cách tiếp cận vanilla có thể nhanh hơn trong vài mili giây không thể nhận thấy, nhưng cú pháp khó hiểu. Tôi sẽ chỉ sử dụng điều này trong một môi trường mà tôi không có quyền truy cập vào jQuery.
Đây là mã tôi đã sử dụng để kiểm tra - nó khá thô sơ nhưng thời gian quay trở lại rất nhất quán qua nhiều lần thử nên tôi sẽ nói chính xác khoảng + - 5ms trong mỗi trường hợp. Các thử nghiệm đã được chạy trong Chrome từ máy chủ của riêng tôi:
<!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