簡體   English   中英

如何將 JavaScript 代碼拆分為多個文件並在不通過 HTML 中的腳本標簽包含它們的情況下使用它們?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM