Giải pháp tốt nhất cho thời gian tải trình duyệt của bạn là sử dụng tập lệnh phía máy chủ để nối tất cả chúng lại với nhau thành một tệp .js lớn. Đảm bảo gzip/rút gọn phiên bản cuối cùng. Yêu cầu duy nhất - đẹp và nhỏ gọn.
Ngoài ra, bạn có thể sử dụng DOM để tạo thẻ <script>
và đặt thuộc tính src trên thẻ, sau đó gắn nó vào <head>
. Nếu bạn cần đợi chức năng đó để tải, bạn có thể làm cho phần còn lại của tệp javascript của bạn được gọi từ sự kiện load
trên thẻ tập lệnh đó.
chức năng này được dựa trên các chức năng của jQuery $.getScript()
function loadScript(src, f) {
var head = document.getElementsByTagName("head")[0];
var script = document.createElement("script");
script.src = src;
var done = false;
script.onload = script.onreadystatechange = function() {
// attach to both events for cross browser finish detection:
if (!done && (!this.readyState ||
this.readyState == "loaded" || this.readyState == "complete")) {
done = true;
if (typeof f == 'function') f();
// cleans up a little memory:
script.onload = script.onreadystatechange = null;
head.removeChild(script);
}
};
head.appendChild(script);
}
// example:
loadScript('/some-other-script.js', function() {
alert('finished loading');
finishSetup();
});
Tôi vừa tạo một plugin Grunt cho khá nhiều yêu cầu tương tự - nó chỉ bao gồm các chức năng được sử dụng trong ứng dụng chính của bạn: https://github.com/mr-moon/grunt-contrib-resolve –