(1)性能和體驗的差距,一直是mobile app開發者放棄HTML5的首要緣由。 瀏覽器天生的切頁白屏、不忍直視的轉頁動畫、浮動元素的抖動、沒法流暢下拉刷新等問題,這些都讓HTML5開發者倍感挫敗,尤爲拿到Android低端機運行,摔手機的心都有(若是開發者須要解決這些問題,須要處理不少兼容性問題,須要花費大把的時間和精力);
(2)瀏覽器默認控件樣式(prompt、alert)又少又醜,製做一個漂亮的控件很是麻煩,也有一些製做簡單的ui框架但性能低下。
(3)mui框架解決的問題:一個能夠方便開發出高性能App的框架,也是目前最接近原生App效果的框架。有些控件就是原生態的效果,mui起到了橋樑的做用。
瞭解:
MUI是國產的,北京數字天堂。。。和它配套的有開發工具HBuilder,5+runtime
5+runtime:能夠將H5打包成native app,原理:利用原生態的webview去承載HTML5。
javascript
(1)輕量
追求性能體驗,是咱們開始啓動MUI項目的首要目標,輕量必然是重要特徵;
MUI不依賴任何第三方JS庫,壓縮後的JS和CSS文件僅有100+K和60+K
能夠根據自個的須要,自定義去下載對應的模塊。和咱們接觸的zepto.js相似。css
(2)原聲UI
鑑於以前的不少前端框架(特別是響應式佈局的框架),UI控件看起來太像網頁,沒有原生感受,所以追求原生UI感受也是咱們的重要目標
MUI以iOS平臺UI爲基礎,補充部分Android平臺特有的UI控件;
容易上手 ;
不須要其餘框架基礎:語法上和咱們以前 學到用到 的寫法是同樣的。前端
其餘框架:ionic(Angular.js), react(native),vue(發音:view)
vue、react、Angular.js是並列關係。
前端是:vue和react的天下vue
(1)名氣不是很大,國產,不像react、Angular.js那樣,世界範圍都在使用。目前國內MUI使用的公司仍是不少的。
(2)框架自己存在一些bug還有一些待解決的問題。(tap == click)java
dist:distribution的縮寫,存放目標,發佈的文件,對於一些框架來講,使用者將裏面的文件copy出來直接用就OK
examples:存儲案例(demo)的文件
grunt:存儲js模塊化相關的文件,相似sass裏面引用sass,這裏是js裏面引用js。和grunt相似的工具用gulp,webpack。
plugin:存儲該框架的插件(擴展)
react
<ul class="mui-table-view">
<li class="mui-table-view-cell mui-collapse">
<a class="mui-navigate-right" href="#">面板1</a>
<div class="mui-collapse-content">
<p>面板1子內容</p>
</div>
</li>
</ul>
能夠在摺疊面板中放置任何內容;摺疊面板默認收縮,若但願某個面板默認展開,只須要在包含.mui-collapse類的li節點上,增長.mui-active類便可;mui官網中的方法說明,使用的就是摺疊面板控件。android
(1)警告框:webpack
$.alert('警告的內容\n可使用\n換行', '警告標題',"按鈕的文字" ,function() {
//點擊確認的回調
});
注:.alert( message, title, btnValue, callback ) message必須是字符串ios
(2)確認框
var btnArray = [‘否’, ‘是’];web
$.confirm('是否確認刪除', '確認的標題', btnArray, function(e) {
//經過e.index能夠知道用戶點擊了哪一個按鈕
if (e.index == 1) {
$(this)[0].innerHTML = "ok";
} else {
$(this)[0].innerHTML = "no"
}
})
注:顯示什麼按鈕是一個數組,當這個數組只有一個元素的時候,相似於警告框
(3)輸入框
.prompt( message, placeholder, title, btnValue, callback )
var btnArray = ['取消', '肯定'];
$.prompt('請輸入評語:', '性能好', 'Hello MUI', btnArray, function(e) {
if (e.index == 1) {
$(this)[0].innerHTML = '謝謝你的評語:' + e.value;
} else {
$(this)[0].innerHTML = '你點了取消按鈕';
}
})
(4)toast提示框
$.toast('歡迎體驗Hello MUI');
2.4 list(列表)
<ul class="mui-table-view">
<li class="mui-table-view-cell">
<a class="mui-navigate-right">Item 1</a>
</li>
<li class="mui-table-view-cell"> Item 2
<span class="mui-badge mui-badge-primary">11</span>
</li>
<li class="mui-table-view-cell"> <a class="mui-navigate-right">Item 3</a></li>
</ul>
2.5 ipnut (表單)
(1)密碼輸入框,後面有一個小眼睛
(2)輸入框後面能夠設置一個 清除的按鈕
2.6 number box(數字輸入框)
<div class="mui-numbox" data-numbox-step='10' data-numbox-min='0' data-numbox-max='100'>
<button class="mui-btn mui-numbox-btn-minus" type="button">-</button>
<input class="mui-numbox-input" type="number" />
<button class="mui-btn mui-numbox-btn-plus" type="button">+</button></div>
注:
(1)咱們能夠設置輸入框的最大值、最小值、設置修改的步長
(2)能夠獲取到輸入框的值。Mui有方法提供
(3)咱們能夠經過js設置輸入框的值。Mui有方法提供
(4)咱們能夠經過js設置輸入框修改的步長,Mui有方法提供
瞭解:組件化開發。在前端,仍是後端(Java)都在提倡。
定義:在解耦複雜系統時,多個功能模塊進行拆解、重組的過程,有多種的屬
性、狀態反映其內部的特性
目的:對複雜系統拆分紅多個組件,方便對其獨立升級和優化。
<div class="mui-switch mui-active" id="mySwitch">
<div class="mui-switch-handle"></div>
</div>
注:
(1)根據div中是否包含mui-active 來判斷當前開關的狀態。
(2)咱們能夠經過js去設置開關的狀態,mui提供方法
(3)咱們能夠監聽到開關改變的狀態,mui提供方法
對框架進行原生態代碼的轉化
mui("#close")[0].style.display = "block";
在轉回框架
mui(mui("#close")[0]);
自學:
(1)側滑導航
(2)radio(單選框)
(3)badge(數字角標)
(4)checkbox(複選框)
(5)彈出菜單
案例:
mui框架將不少功能配置都集中在mui.init方法中,要使用某項功能,只須要在mui.init方法中完成對應參數配置便可,目前支持在mui.init方法中配置的功能包括:建立子頁面、關閉頁面、手勢事件配置、預加載、下拉刷新、上拉加載、設置系統狀態欄背景顏色。
這裏mui和咱們以前接觸的jQuery的是一樣的。可以將mui和 理解成一個函數。mui()、$()理解爲函數調用。
mui(「#XX」),mui(「.XX」)
(function ($,document) { $('#sheet1').popover('toggle'); })(mui,document)
上面這種寫法的好處:
(1)執行速度更快
(2)更方便代碼壓縮
mui或者jQuery對象轉成dom元素
$(「sle」)[0]\mui(「sle」)[0]
原生態轉成mui或者jQuery對象
$(「sle」)、mui(「sle」)、$($(「sle」)[0])、mui(mui(「sle」)[0])
自個瞭解:navigator.userAgent
經過這個,你能夠間接地獲取,當前設配信息
好比:手機類型(Andriod、iOS)、瀏覽器類型(WeChat瀏覽器、QQ瀏覽器、仍是其餘瀏覽器)
(function ($,document) { var isAndriod = $.os.android; if(isAndriod){ $.alert("您用的是安卓手機") }else { $.alert("您用的是街機") } var isWechat = mui.os.wechat; if(isWechat){ $.alert("微信瀏覽器"); }else{ $.alert("非微信瀏覽器"); } var isAndroid = $.os.android; var iOS = $.os.ios; if(!isAndroid && !iOS){ $.alert("winPhone"); } })(mui,document)
經過mui提供的方法,能夠獲取到
(1)系統的版本(iOS、Andriod)
(2)系統的版本
(3)瀏覽器的類型(WeChat、QQ)
(function ($,document) { $("body").on("click","#btnClick",f1); function f1() { $.alert("點擊了!"); }; $("body").on("click","#cancel",function () { $("body").off(); }); })(mui,document)
注:寫取消事件時,將書寫 綁定事件的代碼複製過來,將on改爲off便可。
固然,off()事件能夠不帶參數。
瞭解:面向對象的3大特性:(封裝、繼承、多態)
使用mui.trigger()方法能夠動態觸發特定DOM元素上的事件。
注:第一個參數是DOM原生態元素。
加載第一頁最新的數據,若是服務器數據沒有變動,那麼和上次獲取的到的數據是同樣的。
將獲取到的第一頁數據放置到頁面以前,先清除原有的數據。
加載下一頁數據,同時放到原有數據的最後端。
根據返回數據的條數 和pagesize進行判斷,確實是否還有下一頁。
將當前頁碼存爲一個全局變量page。
當有下拉刷新的時候,page值須要重置