給JS程式一個統一的入口

來源:互聯網
上載者:User

標籤:style   blog   color   io   使用   ar   java   for   sp   

JS程式包含架構部分,和應用部分。

架構部分提供代碼的組織作用,包括定義全域變數,定義命名空間方法等,和具體應用無關,每個頁面都需要包含相同的架構,架構部分在每個頁面都相同。

應用部分提供頁面的邏輯功能。

1.要將應用部分的程式碼群組織起來,給他們一個統一的入口。例如:將應用部分的代碼放到函數init中

function init() { ...... }

2.需要在適當的時候調用這個入口函數,完成頁面程式的初始化。

如果JS程式控制控制某個DOM節點,而改節點當時還沒載入,程式就會報錯。

因此,我們可以監聽程式的onload事件,當程式觸發onload事件後呼叫指令碼。

<script type="text/javascript">    window.onload=function() {        alert(document.getElementById("test").innerHTML);    }  //window.lonload = init;   </script>
<div id="test">hello world</div>

還存在一個問題,window的onload時間要求網頁內所有元素全部載入完畢後才會觸發,如果網頁裡有很大的圖片,載入時間就會邊長,初始化函數就會延時很久才被執行。

為瞭解決這個問題,很多JS架構提供了DOMReady事件代替window.onload.DOMReady只判斷DOM節點是否已經全部產生,至於節點內容是否載入完畢並不關心。

JQ的DOMReady

<script>    alert(document.getElementById("test").innerHTML);    $(document).ready(init);</script><div id="test">hello world</div>

 

如果不使用JS架構,我們有一種簡單的方法實現和DOMReady相似的功能

<script type="text/javascript">    function init() {        alert(document.getElementById("test").innerHtml);    }</script><body><div id="test">hello world</div>...<script type="text/javascript">    init();</script></body>

我們定義init函數,但並不急著立即調用它,我們可以在頁面的最後,即</body>標籤之前再調用init函數,此時頁面內的DOM節點不一定都“載入完成了”,但一定都產生了,從而類比DOMReady效果。

JS的架構部分代碼清單如下

<script type="text/javascript">    var GLOBAL={};    GLOBAL.namespace=function(str) {        var arr=str.split("."),o=GLOBAL;        for (i=(arr[0]=="GLOBAL") ? 1 : 0; i<arr.length; i++) {                o[arr[i]] = o[arr[i]] || {};                o = o[arr[i]];        }    }</script><script type="text/javascript">    function init() {        //應用部分代碼    }</script>...<script type="text/javascript">    init();</script>

 

給JS程式一個統一的入口

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.