<noframes id="xlzjj">
    <address id="xlzjj"></address>
    <form id="xlzjj"></form><em id="xlzjj"><span id="xlzjj"><span id="xlzjj"></span></span></em><address id="xlzjj"></address>

      <noframes id="xlzjj">
      <form id="xlzjj"><nobr id="xlzjj"><progress id="xlzjj"></progress></nobr></form>

      <address id="xlzjj"></address>
      <address id="xlzjj"><address id="xlzjj"><listing id="xlzjj"></listing></address></address>
      <em id="xlzjj"></em>

      MUI多端發布開發指南

      作者: 健隆 分類: 移動開發 發布時間: 2018-05-08 21:41

      MUI官方給的文檔很分散,不系統。遇到問題解決找文檔浪費了很多時間,終于弄清楚了,MUI的使用場景和處理方式。

       

       

      http://ask.dcloud.net.cn/docs/#http://ask.dcloud.net.cn/article/591

       

      多端發布開發指南

      多端發布

      一套代碼,實現wap、微信公眾號、iOSAndroid的App以及流應用,并且保證在App平臺上有更好的體驗,這對于提升開發效率有巨大的幫助。
      實現多端發布,需要處理平臺差異,尤其是HTML5+規范擴展的瀏覽器并不支持的API,需要兼容降級或動態去除方案。
      本文詳細講述了mui的多端發布功能,能做什么,不能做什么,能做的怎么做。

      運行環境識別

      多端發布首先需要識別在不同的運行環境,有幾種判斷環境的方式。
      1. UA
      5+app環境下,ua是包含html5plus字符串的,流應用環境下還會再包含streamapp字符串。
      2. plus對象是否存在
      可以在js里判斷plus對象是否存在,但需要注意一種情況,如果你的js代碼里恰好還定義了一個名為plus的js對象,則這種方法將無法準確判斷運行環境。
      所以一般推薦采取UA判斷的方式處理。

      UI部分的多端發布

      mui在所有ui組件上都提供純HTML實現方案,在HTML效果不佳的ui組件上補充了5+的原生強化。
      mui的窗體切換、父子頁面、長列表滾動、下拉刷新、彈出框、ajax,這些功能在5+App環境下可以調用原生api實現增強體驗,但在非5+環境下也可以按照普通HTML的做法跑通業務。

      1. 窗體切換
      mui.openWindow在5+下執行的動畫是plus.webview的原生動畫,擁有更高的性能。而在非5+環境下執行的是普通網頁跳轉。
      mui雖然有SPA單頁方案,但mui.openWindow并不會在非5+環境下降級為SPA的div窗體切換。
      如果使用spa固然可以一套代碼多處使用,但無法在5+環境下自動升級為原生view切換動畫。
      官方的推薦是常規頁面使用mui.openWindow,只有部分很小的頁面使用spa實現,比如設置界面,即原則是div渲染也不會有太大壓力的場景才使用spa。
      不了解mui的spa方案的,可以看Hello mui示例的setting模板里,需要單獨引入mui.view.js。
      2. 父子頁面和長列表滾動
      長div滾動在Android4.4以下很卡。為解決標題固定頂部,下面內容區超長時也可以滾動流暢,5+引入了雙webview的父子頁面結構,通過webview的body滾動來替代div滾動,以達到原生體驗。
      mui的subpages在5+環境下是雙webview,而在非5+環境下會自動切為iframe。
      mui雖然也提供了div滾動控件,但適用于局部滾動,比如popover、picker等,subpages并不能在非5+下自動切為div。
      3. 下拉刷新
      基于div的下拉刷新在Android4.4以下也不流暢,5+擴展了原生的下拉刷新控件。
      mui的下拉刷新,在android的5+ App環境下會調用5+擴展的雙webview下拉刷新,而在ios 的5+環境和非5+環境下,則會調用基于div的下拉刷新。
      4. 彈出框
      mui.alert,mui.confirm,mui.prompt,mui.toast,這些彈出框都是在5+環境下調用nativeUI,而在非5+環境下調用div模擬的框。
      actionsheet控件在Hello mui里提供了原生和div兩種方式,目前這兩種方式并不能自動切換。
      popover沒有原生方式,只有div方式,不存在跨端障礙。
      5. 側滑菜單
      mui提供了原生和div兩種側滑菜單。
      目前使用了原生側滑菜單后并不能在非5+環境下自動切換為div模式。
      推薦的做法是把側滑菜單做簡單做小,直接使用div方式的側滑菜單。
      6. tab選項卡
      mui并沒有獨立的選項卡控件,而是在Hello mui示例里做了基于原生和div兩個不同的選項卡代碼示例。
      目前使用了原生側滑選項卡后并不能在非5+環境下自動切換為div模式。
      從性能角度而言,div選項卡很難承載太多內容,實際使用量也偏少。所以開發者使用了webview的選項卡后,為了實現多端發布,需要在tab的點擊事件做判斷處理,發現是非5+環境,建議把webview切換改為網頁跳轉。
      7. ajax
      mui.ajax在5+下為跨域而使用了5+的plus.NET的api,而在非5+環境下會自動切換為普通的ajax。
      8. 語音輸入控件
      Hello mui的input里有語音輸入控件,在HBuilder里敲mspeech回車也給直接生成該控件。在非5+環境下,該控件的麥克風圖標不會顯示出來,變成普通的輸入框。

      能力方面的多端發布:plusto互轉

      除了ui相關,5+還擴展了大量的JS API,這些API有的在手機瀏覽器或微信瀏覽器里有類似功能,有的沒有。
      處理這方面的問題無非兩種思路,裁掉或兼容降級。
      1. 對于非5+環境不存在的功能:
      調5+的api前判斷下是不是在5+的ua環境下。不是5+環境則不執行plus代碼。
      2. 對于可降級的功能:
      定位、拍照、錄音、相冊功能其實html5規范里也有,只是因為體驗不佳所以5+進行了擴展。
      處理這類問題又有2種思路:
      2.1 開發者可以在不同的運行環境下引入不同的js,實現這些業務邏輯。比如在瀏覽器下引入h5camera.js,而在5+下引入pluscamera.js。
      2.2 也可以通過重定義js的方式實現標準化替換。
      DCloud建立了一個開源項目plusto,https://github.com/dcloudio/plusto,這個提供了一個定位轉換的例子。
      Html5寫的定位代碼,載入示例的js后,該js會自動判斷當前的運行環境,發現在5+環境下會重定義HTML5標準的定位對象,改成plus.geolocation對象。
      重定義也有2種做法,一種是使用HTML5的方式寫,引入js重定義為plus。一種是使用plus寫,然后引入js重新為普通瀏覽器或微信對象。
      重定義的執行性能低于分條件判斷。
      plus.to的開源庫還不完整,也歡迎網友積極貢獻,提供更多plus、瀏覽器、微信的互轉庫文件。

      條件編譯,加強項目管理,提升執行性能

      涉及5+App的js文件,可以獨立為單獨js,通過條件編譯工具在打包時動態引入。
      條件編譯比運行期動態判斷的效率要高,推薦開發者使用。
      glup、grunt都是業內成熟的前端構建工具,相關教程本文不介紹,請自行搜索。
      DCloud的mui及Hello mui示例是使用grunt構建的,grunt相關配置也都開源在https://github.com/dcloudio/mui
      Hello mui作為一個Android、iOS、瀏覽器里都能使用的多端發布示例,其中同時涉及條件編譯、動態UA判斷等技術。

      如果覺得我的文章對您有用,請隨意打賞。您的支持將鼓勵我繼續創作!

      偷拍久久国产視频,AV一区二区国产剧情,国产剧情AV果冻传媒在线观看,国产网红k频道隔壁小姐姐,综合国产日韩亚洲欧美一区,爱豆传媒国产剧情免费观看,国产萝莉福利,国产网红主播剧情 k频道国产网红| 韩国大元| 综艺节目麻豆传媒| 家庭欧美乱| 日本 濑| 学生的母亲2中文字幕| 五月天免费中文字幕在线| av无码漫画在线观看| 草莓社区地址一地址二2020| 国产手机偷拍在线播放视频| 国产高清视频福利一区| 精品国产动漫小凡直播| 狗血国产剧的剧情| 国产酒店漂亮情侣magnet| 鸭子2在线视频国产| 午夜一色大片在线观看| 国产md传媒剧情| 国产偷拍情侣视频| 2018偷拍美女国产av| 国产sm虐恋调教电影| 美国护照去韩国| 9UU在线观看麻豆传媒和swag| 欧美裸休女图片欣赏| 演日本军官的演员| 豹纹外套女同性恋| 中文字幕番号列表| 雪花在线 中文字幕| 胸大姐妹中文字幕| 含羞草 精选 国产| av国产电堂网在线视频| 99re视频加勒比在线精品视频| 午夜福利在线观看19集| 国产带枪战剧情的毛片| 2019国产情侣小视频| 欧美恋足网站| 国产原创自拍磁力连接| 女同性恋舌吻7钟| 印度士兵走路中文字幕| 男人影视中文字幕第一页| 萌白酱在线观看亚洲| 鲍鱼 国产自拍在线视频| http://www.shootinrio.com http://www.loandaypay.com http://www.igyoma.com http://www.51sailisi.com http://www.110days.com http://www.peleteriagalifer.com