miniui加載(二)


一、miniui是3.9版本,不同版本看到的內容有差異

二、jQuery(callback) 等同於$( document ).ready()

接下來看看如何使用代碼中mini.parse()來避免自己寫mini.parse()

1、js代碼的執行順序

js代碼是順序執行的,沿着文檔加載方向(我猜哦),當我們有這樣一個html頁面時

<!DOCTYPE html>
<html>
<head>
    <title>test</title>
    <script src="../../script/boot.js" type="text/javascript"></script>
</head>
<body>
    <input type="button" class="mini-autocomplete" value="111" id="testButton">
</body>
</html>
<script>if(mini.get("testButton") == null)
  {
     $("body").append("<br/>");
     $("body").append("在parse()方法執行之前,mini.get(id)返回為null\r\n");
  } </script>

看一下文檔加載順序:

會先執行Base.html中,也就是我們自己寫的js代碼段,就算把自己js代碼寫在單獨文件里,然后放在boot.js后面引用,也會是自己的js代碼先執行,畢竟自動執行的mini.parse()需要等文檔加載完畢才會執行。

那我們也等文檔加載完畢再執行,把自己的js代碼段修改為:

jQuery(function(){
       debugger;
if(mini.get("testButton") == null) { $("body").append("<br/>"); $("body").append("在parse()方法執行之前,mini.get(id)返回為null\r\n"); } })

在miniui自動執行mini.parse()的地方設置斷點,然后F12進入調試:

會發現程序會先執行到圖中的if (document.body),然后我們自己js代碼的debugger,之后到圖中的mini.parse(),我認為是圖中的setTimeout導致的。

然后再次修改我們的js代碼:

jQuery(function(){
        setTimeout(() => {
            if(mini.get("testButton") == null)
            {
                $("body").append("<br/>");
                $("body").append("在parse()方法執行之前,mini.get(id)返回為null\r\n");
            } 
        }, 1000);
    })

It works.我們沒有自己調用mini.parse(),但是我們通過mini.get()獲取到了解析后的控件。

但是好像沒有什么用,還不如自己寫個mini.parse(),會不會存在什么比較好的方法呢?都需要自己寫mini.parse(),感覺不合理啊,難道存在即合理嗎。

關於mini.parse()的大致實現后面再說咯。

miniui文件加載的時候還做了很多事情,涉及到js的繼承,有趣的很,下一次就看看miniui里面的繼承,一切的一切,都因為下面這個方法導致。

//ol0oOo : superclass
//oO000O : constructor
//Olo01l構造函數  繼承自superclass 
Olo01l = function() {
    Olo01l[ol0oOo][oO000O].apply(this, arguments)
}
;

http://www.w3school.com.cn/js/pro_js_object_oriented.asp    給個鏈接,我覺得里面對js的繼承講解的很詳細,收獲頗多。

good night.

還有一些遇到的問題:

1、miniui.js文件不能格式化之后再使用。可以在瀏覽器中使用如下圖標展開再調試,不知道有沒有什么更好的方法。

 

2、我是試用我是試用我是試用,有問題及時聯系


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM