MUI框架开发APP详解,一篇就够了

简介: 1.MUI简介最接近原生APP体验的高性能前端框架追求性能体验,是开始启动MUI项目的首要目标,轻量必然是重要特征;MUI不依赖任何第三方JS库,压缩后的JS和CSS文件仅有100+K和60+K鉴于之前的很多前端框架(特别是响应式布局的框架),UI控件看起来太像网页,没有原生感觉,因此追求原生UI感觉也是我们的重要目标MUI以iOS平台UI为基础,补充部分Android平台特有的UI控件MUI官方文档


1.MUI简介


最接近原生APP体验的高性能前端框架


追求性能体验,是开始启动MUI项目的首要目标,轻量必然是重要特征;


MUI不依赖任何第三方JS库,压缩后的JS和CSS文件仅有100+K和60+K


鉴于之前的很多前端框架(特别是响应式布局的框架),UI控件看起来太像网页,没有原生感觉,因此追求原生UI感觉也是我们的重要目标


MUI以iOS平台UI为基础,补充部分Android平台特有的UI控件


MUI官方文档


2.下载安装hbuilderx


hbuilderx


选择简易版即可,无需安装操作


3.新建一个5+app项目


新建 — 项目


f7eb5f8863284a8ca8550cbecbb58f1d.png


选择5+app,MUI模板即可


660c62610a484d87aebffd33664cb4a0.png


这个就是新建好的项目目录:(也是mui初始项目模板)🎈


96a98991605b4459ad9bebbe12858f62.png


大功告成!!!🎉


4.制作首页


常见APP结构:(头部+主题+底部)


34cc1a4877eb404dbe7b963da312304f.png


首页头部


注意,新建html文件时需要选择mui模板的html

添加标题:

文档中搜索标题:快捷字符是mhe


893e92be40f845dea94b1211e1168717.png


<!-- 标题栏 -->
<header class="mui-bar mui-bar-nav">
  <h1 class="mui-title">小钱同学</h1>
</header>


同样搜索文档加入搜索框:


<!-- 标题栏 -->
<header class="mui-bar mui-bar-nav">
  <!-- 搜索框  -->
  <div class="mui-input-row mui-search">
    <input type="search" class="mui-input-clear" placeholder="请输入搜索内容">
  </div>
</header>


头部页面显示效果:


719ff653d5324a779620129ef39b2657.png


首页主体


搜索文档添加主体:🔍


<!-- 主体mbo -->
<div class="mui-content">
  主体内容
</div>


搜索文档加入轮播图:🔍


<!-- 主体 -->
<div class="mui-content">
  <!-- 轮播图msl图片轮播 -->
  <div id="slider" class="mui-slider" >
    <div class="mui-slider-group mui-slider-loop">
    <!-- 额外增加的一个节点(循环轮播:第一个节点是最后一张轮播) -->
    <div class="mui-slider-item mui-slider-item-duplicate">
      <a href="#">
      <img src="http:\/\/placehold.it\/400x300">
      </a>
    </div>
    <!-- 第一张 -->
    <div class="mui-slider-item">
      <a href="#">
      <img src="http:\/\/placehold.it\/400x300">
      </a>
    </div>
    <!-- 第二张 -->
    <div class="mui-slider-item">
      <a href="#">
      <img src="http:\">
      </a>
    </div>
    <!-- 第三张 -->
    <div class="mui-slider-item">
      <a href="#">
      <img src="http:\">
      </a>
    </div>
    <!-- 第四张 -->
    <div class="mui-slider-item">
      <a href="#">
      <img src="http:\/\/placehold.it\/400x300">
      </a>
    </div>
    <!-- 额外增加的一个节点(循环轮播:最后一个节点是第一张轮播) -->
    <div class="mui-slider-item mui-slider-item-duplicate">
      <a href="#">
      <img src="http:\/\/placehold.it\/400x300">
      </a>
    </div>
    </div>
    <div class="mui-slider-indicator">
    <div class="mui-indicator mui-active"></div>
    <div class="mui-indicator"></div>
    <div class="mui-indicator"></div>
    <div class="mui-indicator"></div>
    </div>
  </div>
</div>
<!-- 主体结束 -->


效果显示:(由于图片路径没有配置,所以图片显示失败)


174851d64dfc4534a09efde831e5301e.png


加入轮播js:


<script type="text/javascript">
  mui.init();
  //获取按当前文档中轮播图组件对象
  var sliderObj = mui("#slider");
  sliderObj.slider({
    interval:1000
  })
</script>


您可以使用Hbuilder的预览功能来实时观察代码运行情况

当然我们更推荐您使用安卓/IOS模拟器进行开发工作


954db342d37b4dbaab81486b95ab8af5.png


实现九宫格:mgr


<!-- 九宫格mgr -->
<ul class="mui-table-view mui-grid-view mui-grid-9">
<li class="mui-table-view-cell mui-media mui-col-xs-4 mui-col-sm-3">
  <a href="#">
    <span class="mui-icon mui-icon-home"></span>
    <div class="mui-media-body">Home</div>
  </a>
</li>
<li class="mui-table-view-cell mui-media mui-col-xs-4 mui-col-sm-3">
  <a href="#">
    <span class="mui-icon mui-icon-email"><span class="mui-badge mui-badge-red">5</span></span>
    <div class="mui-media-body">Email</div>
  </a>
</li>
<li class="mui-table-view-cell mui-media mui-col-xs-4 mui-col-sm-3">
  <a href="#">
    <span class="mui-icon mui-icon-chatbubble"></span>
    <div class="mui-media-body">Chat</div>
  </a>
</li>
<li class="mui-table-view-cell mui-media mui-col-xs-4 mui-col-sm-3">
  <a href="#">
    <span class="mui-icon mui-icon-location"></span>
    <div class="mui-media-body">Location</div>
  </a>
</li>
<li class="mui-table-view-cell mui-media mui-col-xs-4 mui-col-sm-3">
  <a href="#">
    <span class="mui-icon mui-icon-search"></span>
    <div class="mui-media-body">Search</div>
  </a>
</li>
<li class="mui-table-view-cell mui-media mui-col-xs-4 mui-col-sm-3">
  <a href="#">
    <span class="mui-icon mui-icon-phone"></span>
    <div class="mui-media-body">Phone</div>
  </a>
</li>
  </ul>
<!-- 九宫格mgr结束 -->


显示效果:


6d26dbc647b64f89817f48ea11d04156.png


可以看到,mui的框架功能还是非常齐全的🎄


5.制作底部选项卡


底部选项卡是公用的界面,所以新建一个html文件即可


<!-- 底部选项卡mta -->
<nav class="mui-bar mui-bar-tab">
  <a class="mui-tab-item mui-active">
    <span class="mui-icon mui-icon-home"></span>
    <span class="mui-tab-label">首页</span>
  </a>
  <a class="mui-tab-item">
    <span class="mui-icon mui-icon-phone"></span>
    <span class="mui-tab-label">电话</span>
  </a>
  <a class="mui-tab-item">
    <span class="mui-icon mui-icon-email"></span>
    <span class="mui-tab-label">邮件</span>
  </a>
  <a class="mui-tab-item">
    <span class="mui-icon mui-icon-gear"></span>
    <span class="mui-tab-label">设置</span>
  </a>
</nav>


显示效果:


276857d26d984cc4a5f595b9ea7b809c.png


实现底部选项卡切换:全部代码:


<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
    <title></title>
    <script src="js/mui.min.js"></script>
    <link href="css/mui.min.css" rel="stylesheet"/>
</head>
<body>
  <!-- 底部选项卡mta -->
  <nav class="mui-bar mui-bar-tab">
    <a class="mui-tab-item mui-active" href="appIndex.html">
      <span class="mui-icon mui-icon-home"></span>
      <span class="mui-tab-label">首页</span>
    </a>
    <a class="mui-tab-item" href="appPhone.html">
      <span class="mui-icon mui-icon-phone"></span>
      <span class="mui-tab-label">电话</span>
    </a>
    <a class="mui-tab-item" href="email.html">
      <span class="mui-icon mui-icon-email"></span>
      <span class="mui-tab-label">邮件</span>
    </a>
    <a class="mui-tab-item" href="setting.html">
      <span class="mui-icon mui-icon-gear"></span>
      <span class="mui-tab-label">设置</span>
    </a>
  </nav>
  <script type="text/javascript">
      mui.init();
    // 底部选项卡切换
    mui.plusReady(function () {
        // 定义一个容器存储底部选项卡的所有页面
      var pages = ["appIndex.html","appPhone.html","email.html","setting.html"];
      // 获取当前窗口对象
      var ws = plus.webview.currentWebview();
      // 设置窗口样式
      var pageStyle = {
        top:"0px",
        bottom:"50px"
      }
      // 循环创建窗口对象
      for(var i = 0 ; i < pages.length ; i++){
        var item = plus.webview.create(pages[i],pages[i],pageStyle);
        ws.append(item);
      }
      // 设置默认打开窗口
      plus.webview.show(pages[0]);
      // 选项卡事件监听
      mui(".mui-bar-tab").on("tap","a",function(){
        // 获取被点击a标签的href属性值
        var href = this.getAttribute('href');
        // 展示页面
        plus.webview.show(href);
      });
    });
  </script>
</body>
</html>


6.H5plus使用


设置页面样式


<!-- 头部 -->
<header class="mui-bar mui-bar-nav">
  <h1 class="mui-title">H5plus</h1>
</header>
<!-- 主体 -->
<div class="mui-content">
  <!-- 列表 -->
  <ul class="mui-table-view">
      <li class="mui-table-view-cell">
        <a class="mui-navigate-right">
          蜂鸣
        </a>
      </li>
      <li class="mui-table-view-cell">
        <a class="mui-navigate-right">
           Item 2
        </a>
      </li>
      <li class="mui-table-view-cell">
        <a class="mui-navigate-right">
           Item 3
        </a>
      </li>
    </ul>
</div>


蜂鸣


<body>
  <!-- 头部 -->
  <header class="mui-bar mui-bar-nav">
    <h1 class="mui-title">H5plus</h1>
  </header>
  <!-- 主体 -->
  <div class="mui-content">
    <!-- 列表 -->
    <ul class="mui-table-view">
        <li class="mui-table-view-cell" id="beep">
          <a class="mui-navigate-right">
            蜂鸣
          </a>
        </li>
        <li class="mui-table-view-cell">
          <a class="mui-navigate-right">
             Item 2
          </a>
        </li>
        <li class="mui-table-view-cell">
          <a class="mui-navigate-right">
             Item 3
          </a>
        </li>
      </ul>
  </div>
  <script src="js/mui.js"></script>
  <script type="text/javascript">
    mui.init()
    mui.plusReady(function(){
      // 蜂鸣声事件监听
      document.getElementById("beep").addEventListener("tap",function(){
        // 仅限于安卓,响铃三次
        plus.device.beep(3);
      });
    });
  </script>
</body>


7.app打包发布


基础配置


双击manifest.josn,进行基础配置,需要获取APPID,及配置APP名称版本主页等


图标配置


9d608849803c48139644530180844721.png


选择图片后记得点击【自动生成所有图标并替换】


发行


【发行】—【原生APP-云打包】


46be296a65174bfca3e16c1fcf293d1d.png


按所需进行配置,只需要使用公共测试证书即可


ec37bacc08e84d9da0549f01eebaabea.png


打包发布!!!🎉✨

目录
相关文章
|
2月前
|
人工智能 文字识别 小程序
旅游社用什么工具收报名 + 资料?不开发 App 也能自动收集信息
本文探讨了旅游行业中报名信息收集的常见痛点及解决方案,重点介绍了二维码表单工具在提升信息收集效率、简化操作流程方面的优势。通过对比多种工具,分析其适用场景与实际应用逻辑,为一线旅游从业者提供高效、低成本的执行参考。
|
3月前
|
容器
HarmonyOS NEXT仓颉开发语言实战案例:外卖App
仓颉语言实战分享,教你如何用仓颉开发外卖App界面。内容包括页面布局、导航栏自定义、搜索框实现、列表模块构建等,附完整代码示例。轻松掌握Scroll、List等组件使用技巧,提升HarmonyOS应用开发能力。
|
2月前
|
移动开发 前端开发 JavaScript
鸿蒙NEXT时代你所不知道的全平台跨端框架:CMP、Kuikly、Lynx、uni-app x等
本篇基于当前各大活跃的跨端框架的现状,对比当前它们的情况和未来的可能,帮助你在选择框架时更好理解它们的特点和差异。
269 0
|
3月前
|
IDE 开发工具 开发者
使用DevEcoStudio 开发、编译鸿蒙 NEXT_APP 以及使用中文插件
# 使用DevEcoStudio 开发、编译鸿蒙 NEXT_APP 以及使用中文插件 #鸿蒙开发工具 #DevEco Studio
293 1
|
3月前
|
人工智能 小程序 JavaScript
【一步步开发AI运动APP】十、微调优化内置运动分析器,灵活适配不同的应用场景
本文介绍了如何通过【一步步开发AI运动APP】系列博文,利用`ISportOptimizer`对内置运动分析器进行微调优化。相比小程序,APP框架(如uni-app)因技术差异,无法直接修改运动分析器参数,因此提供了统一的优化机制。开发者可通过`ISportOptimizer`获取和更新检测规则、动作样本等,灵活适应不同场景需求,如全民运动赛事的宽松模式或学生体测的严格模式。文中还提供了示例代码,展示如何对具体运动项目(如仰卧起坐)进行优化。需要注意的是,微调优化适用于标准动作的小范围调整,若动作变化过大(如花式跳绳),可期待后续自定义扩展功能。
|
3月前
|
容器
HarmonyOS NEXT仓颉开发语言实战案例:健身App
本期分享一个健身App首页的布局实现,顶部采用Stack容器实现重叠背景与偏移效果,列表部分使用List结合Scroll实现可滚动内容。代码结构清晰,适合学习HarmonyOS布局技巧。
|
3月前
|
容器
HarmonyOS NEXT仓颉开发语言实战案例:银行App
仓颉语言银行App项目分享,页面布局采用List容器,实现沉浸式体验与模块化设计。顶部资产模块结合Stack与Row布局,背景图与内容分离,代码清晰易懂;功能按钮部分通过负边距实现上移效果,圆角仅保留顶部;热门推荐使用header组件,结构更规范。整体代码风格与ArkTS相似,但细节更灵活,适合金融类应用开发。
|
4月前
|
存储 消息中间件 前端开发
PHP后端与uni-app前端协同的校园圈子系统:校园社交场景的跨端开发实践
校园圈子系统校园论坛小程序采用uni-app前端框架,支持多端运行,结合PHP后端(如ThinkPHP/Laravel),实现用户认证、社交关系管理、动态发布与实时聊天功能。前端通过组件化开发和uni.request与后端交互,后端提供RESTful API处理业务逻辑并存储数据于MySQL。同时引入Redis缓存热点数据,RabbitMQ处理异步任务,优化系统性能。核心功能包括JWT身份验证、好友系统、WebSocket实时聊天及活动管理,确保高效稳定的用户体验。
256 4
PHP后端与uni-app前端协同的校园圈子系统:校园社交场景的跨端开发实践
|
3月前
|
安全 新制造
不用开发APP,也能实现设备巡检自动提醒和记录归档
设备巡检新方案!告别纸质表格,用二维码轻松搞定自动提醒和记录归档。某工厂分享如何通过草料二维码实现一物一码、扫码填写巡检信息,自动生成数据归档,还能设置定期提醒,确保巡检任务按时完成。无需额外开发 App,低成本高效管理,为设备巡检提供简单又实用的解决方案。
|
4月前
|
人工智能 JavaScript 前端开发
借助 CodeBuddy,我轻松开发出三分钟读书 App
借助 CodeBuddy,我轻松开发出三分钟读书 App
104 6

热门文章

最新文章