一、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、我是試用我是試用我是試用,有問題及時聯系