![](/img/trans.png)
[英]How to include external JS files without including them in the head tag?
[英]How to split JavaScript code into multiple files and use them without including them via script tag in HTML?
我正在廣泛使用構造函數(類),並希望每個構造函數都在一個單獨的文件中(類似於 Java)。 假設我有構造函數說 Class1、Class2、... Class10,而我只想使用 Class1 和 Class5,我需要使用腳本標簽將 Class1.js 和 Class2.js 包含到 HTML 頁面中。 稍后,如果我還需要使用 Class3 和 Class6,我再次需要 go 到 HTML 頁面並為它們添加腳本標簽。 這種方法的維護太差了。
JavaScript 中是否有類似於包含 C 指令的內容? 如果沒有,有沒有辦法模仿這種行為?
您可以使用 jQuery.getScript:
http://api.jquery.com/jQuery.getScript
或許多 javascript 加載器中的任何一個,如 YUI、JSLoader 等。請參見此處的比較:
https://spreadsheets.google.com/lv?key=tDdcrv9wNQRCNCRCflWxhYQ
你可以使用這樣的東西:
jsimport = function(url) {
var _head = document.getElementsByTagName("head")[0];
var _script = document.createElement('script');
_script.type = 'text/javascript';
_script.src = url;
_head.appendChild(_script);
}
然后在您的代碼中使用它,例如:
jsimport("example.class.js");
當head
已經在 DOM 中時要小心使用它,否則它將不起作用。
是:您可以從 JavaScript 創建script
標簽並按需加載所需的類。
在這里查看幾個解決方案: http://ntt.cc/2008/02/10/4-ways-to-dynamically-load-external-javascriptwith-source.html
通過仔細使用id
屬性或包含“已加載”腳本的全局變量,應該可以為 JavaScript 開發依賴關系解析框架,例如 Maven 或 OSGi 用於 ZD52387880E1EA22817AZ2D379。
當我們談論 JavaScript 時,我覺得最好包含一個包含您需要的所有內容的文件,而不是每次您需要當前無法訪問的內容時都請求一個新文件。
每次您發送另一個文件時,瀏覽器都會做很多事情。 它通過發送 HTTPRequest 檢查請求的文件是否真的可以找到,如果瀏覽器已經看到了,它是否被緩存並且沒有改變?
您想要做的不是 JavaScript 的精神。 執行您所解釋的操作會產生額外的加載時間,並且在文件完全加載之前您將無法執行任何操作,這會產生等待時間。
為此最好使用一個文件,包括在</body
標記的內端(這不會導致瀏覽器等待腳本完成加載頁面),然后創建一個簡單的 function 將當頁面完全加載時執行。
例如:
<html>
<head></head>
<body>
<!-- HTML code here... -->
<script src="javascript.js"></script>
<script>
(function r(f) {
/in/.test(document.readyState) ? setTimeout('r(' + f + ')', 9) : f()
})(function() {
// When the page has completey loaded
alert("DOM has loaded and is ready!");
});
</script>
</body>
</html>
您可以通過在 js 文件的開頭執行以下操作來將一個 js 文件包含到另一個 js 文件中:
document.write("<script type='text/javascript' src='another.js'></script>");
在您的情況下,最好的方法是使用某種編譯器。 最偉大的是 Google Closure Compiler。 這是 Google Closure Libraty 的一部分,其結構與您描述的相似。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.