WEB開發者之混合開發APP(四),index.html 首頁
App專案的首頁,index.html.
首頁顯示效果和樣式的部分,不在此討論,本專案採用的是mui框架。
mui框架(http://www.dcloud.io/mui.html)也是dcloud公司團隊的框架,使用該框架的優點,1,以iOS 7為基礎,補充部分Android特有控制元件,顯示為原生UI效果;2.mui的視窗的管理,事件管理,ajax,上拉載入,下拉重新整理等功能強大。筆者認為,第2點是最重要的。UI部分,也可以自行設計切圖,mui不是必須的。
以下對筆者專案中的index.html的幾個關鍵點做下重點說明:
1. 引入mui的js和css.
2. mui初始化.對於mui初始化的詳細引數配置,後續文章將詳細說明。
<script type="text/javascript" charset="utf-8">
mui.init();
</script>
3. mui.plusReady. 關鍵點。
在app開發中,若要使用HTML5+擴充套件api,必須等plusready事件發生後才能正常使用,mui將該事件封裝成了mui.plusReady()方法,涉及到HTML5+的api,建議都寫在mui.plusReady方法中。
mui.plusReady只在webview新建立(頁面新建立)的時候執行,對於預載入的頁面再次開啟時,mui.plusReady不會再次執行。所以,如果有個函式,需要在每次開啟頁面的時候都要執行,則要使用【頁面預載入】和【自定義事件】技術。
mui.preload的底層呼叫的是plus.webview.
mui.plusReady(function(){
console.log("當前頁面URL:"+plus.webview.currentWebview().getURL());
});
4. 頁面預載入。
App H5頁面和普通web H5頁面的區別是,
(1)web h5頁面,每次開啟的時候,都是在瀏覽器裡重新渲染的,也就是每次都要重新建立,而App h5頁面,可以用每次新建的方式,可以用預載入頁面的方式。每次新建頁面的問題是,如果頁面載入比較耗時,會出現白屏的情況,對於使用者體驗和上架都是極為不利的;
(2)頁面之間切換。web h5頁面的跳轉,可用window.location或者a標籤的href,但是對於混合開發App,這是不行的,因為app的頁面之間顯示是通過切換來實現的。
頁面預載入程式碼如下:
<script type="text/javascript" charset="utf-8">
mui.init();
//詳情頁面
var linePage = null;
//mui.plusReady只在webview新建立的時候執行.mui.preload的底層呼叫的是plus.webview.
mui.plusReady(function(){
//先判定是否已經登入
if(!checkLogin()){
goPage('login.html','');
}
//頁面預載入
if(!linePage){
linePage = mui.preload({
url:'linelist.html',
id:'linelist.html'
});
}
//會員中心頁面預載入
mui.preload({
url:'userCenter.html',
id:'userCenter.html'
});
console.log("index.html載入完畢");
});
</script>
通過mui.preload()的方式,是實現預載入的一種方法。預載入後,呼叫的方式如下:
//觸發列表頁面的事件
mui.fire(linePage,'lineID',{
lid:lid
});
//開啟列表頁面
mui.openWindow({
id:"linelist.html"
});
mui.fire的作用是觸發頁面的自定義事件,第一個引數是頁面物件(linelist.html),第二個引數lineID,是在linelist.html頁面中自定義的函式,第3個引數是向這個自定義函式的傳遞的引數。
mui.openWindow的作用是開啟頁面,只用配置頁面的id即可,跟預載入的頁面id一樣。
5. 頁面跳轉
<div class="lvyous">
<a data-lid = "3">
<div class="lvyoue">
<img src="img/tue5.png" />
</div>
<h4>頁面1</h4>
</a>
<a data-lid = "1">
<div class="lvyoue">
<img src="img/tue6.png" />
</div>
<h4>頁面2</h4>
</a>
<a data-lid = "2">
<div class="lvyoue">
<img src="img/tue7.png" />
</div>
<h4>頁面3</h4>
</a>
</div>
//繫結頁面的點選事件
mui(".lvyous").on('tap','a',function(){
if(!checkLogin()){
goPage('login.html','');
return;
}
var lid = this.getAttribute("data-lid");
//觸發列表頁面的事件
mui.fire(linePage,'lineID',{
lid:lid
});
//開啟列表頁面
mui.openWindow({
id:"linelist.html"
});
});
懂Html就能開發App,博文持續更新,博主QQ:260737830!