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


打包发布!!!🎉✨

目录
相关文章
|
4天前
|
开发框架 小程序 前端开发
圈子社交app前端+后端源码,uniapp社交兴趣圈子开发,框架php圈子小程序安装搭建
本文介绍了圈子社交APP的源码获取、分析与定制,PHP实现的圈子框架设计及代码编写,以及圈子小程序的安装搭建。涵盖环境配置、数据库设计、前后端开发与接口对接等内容,确保平台的安全性、性能和功能完整性。通过详细指导,帮助开发者快速搭建稳定可靠的圈子社交平台。
|
3天前
鸿蒙语言开发 几十套鸿蒙ArkTs app毕业设计及课程作业
鸿蒙语言开发 几十套鸿蒙ArkTs app毕业设计及课程作业
14 1
|
12天前
|
JSON 缓存 前端开发
HarmonyOS NEXT 5.0鸿蒙开发一套影院APP(附带源码)
本项目基于HarmonyOS NEXT 5.0开发了一款影院应用程序,主要实现了电影和影院信息的展示功能。应用包括首页、电影列表、影院列表等模块。首页包含轮播图与正在热映及即将上映的电影切换显示;电影列表模块通过API获取电影数据并以网格形式展示,用户可以查看电影详情;影院列表则允许用户选择城市后查看对应影院信息,并支持城市选择弹窗。此外,项目中还集成了Axios用于网络请求,并进行了二次封装以简化接口调用流程,同时添加了请求和响应拦截器来处理通用逻辑。整体代码结构清晰,使用了组件化开发方式,便于维护和扩展。 该简介概括了提供的内容,但请注意实际开发中还需考虑UI优化、性能提升等方面的工作。
65 11
|
9天前
|
前端开发 数据库 UED
uniapp开发,前后端分离的陪玩系统优势,陪玩app功能特点,线上聊天线下陪玩,只要4800
前后端分离的陪玩系统将前端(用户界面)和后端(服务器逻辑)分开开发,前者负责页面渲染与用户交互,后者处理数据并提供接口。该架构提高开发效率、优化用户体验、增强可扩展性和稳定性,降低维护成本,提升安全性。玩家可发布陪玩需求,陪玩人员发布服务信息,支持在线聊天、预约及线下陪玩功能,满足多样化需求。[演示链接](https://www.51duoke.cn/games/?id=7)
|
15天前
|
供应链 搜索推荐 API
1688APP原数据API接口的开发、应用与收益(一篇文章全明白)
1688作为全球知名的B2B电商平台,通过开放的原数据API接口,为开发者提供了丰富的数据资源,涵盖商品信息、交易数据、店铺信息、物流信息和用户信息等。本文将深入探讨1688 APP原数据API接口的开发、应用及其带来的商业收益,包括提升流量、优化库存管理、增强用户体验等方面。
76 6
|
16天前
|
机器学习/深度学习 前端开发 算法
婚恋交友系统平台 相亲交友平台系统 婚恋交友系统APP 婚恋系统源码 婚恋交友平台开发流程 婚恋交友系统架构设计 婚恋交友系统前端/后端开发 婚恋交友系统匹配推荐算法优化
婚恋交友系统平台通过线上互动帮助单身男女找到合适伴侣,提供用户注册、个人资料填写、匹配推荐、实时聊天、社区互动等功能。开发流程包括需求分析、技术选型、系统架构设计、功能实现、测试优化和上线运维。匹配推荐算法优化是核心,通过用户行为数据分析和机器学习提高匹配准确性。
52 3
|
18天前
|
人工智能 小程序 数据处理
uni-app开发AI康复锻炼小程序,帮助肢体受伤患者康复!
近期,多家康复机构咨询AI运动识别插件是否适用于肢力运动受限患者的康复锻炼。本文介绍该插件在康复锻炼中的应用场景,包括康复运动指导、运动记录、恢复程度记录及过程监测。插件集成了人体检测、姿态识别等功能,支持微信小程序平台,使用便捷,安全可靠,帮助康复治疗更加高效精准。
|
8天前
|
安全 算法 机器人
双重防护!红娘相亲app搭建开发,婚恋交友系统登录方式,密码+验证码的优势
在婚恋交友系统中,密码和验证码是两种重要的安全措施。密码用于验证用户身份,应设置为复杂组合以防止未经授权的访问;验证码则通过图形或字符识别,防止自动化攻击如暴力破解和注册机器人。两者同时开启可显著提高安全性,防止暴力破解和自动化注册,提升用户信任感。建议要求强密码、定期更新验证码样式,并在可疑登录时增加验证码复杂性。这样既能保障用户信息安全,又兼顾了用户体验。 ![交友11111.jpg](https://ucc.alicdn.com/pic/developer-ecology/hy2p6wcvgk4oe_c9eb8d6eb8144866b0cd1d96ffb0c907.jpg)
|
2月前
|
人工智能 小程序 搜索推荐
uni app下开发AI运动小程序解决方案
本文介绍了在小程序中实现AI运动识别的解决方案。该方案依托于UNI平台,通过高效便捷的插件形式,实现包括相机抽帧控制、人体识别、姿态识别等在内的多项功能,无需依赖后台服务器,大幅提高识别效率和用户体验。方案内置多种运动模式,支持自定义扩展,适用于AI健身、云上赛事、AI体测等多场景,适合新开发和存量改造项目。
|
2月前
|
设计模式 Swift iOS开发
探索iOS开发:从基础到高级,打造你的第一款App
【10月更文挑战第40天】在这个数字时代,掌握移动应用开发已成为许多技术爱好者的梦想。本文将带你走进iOS开发的世界,从最基础的概念出发,逐步深入到高级功能实现,最终指导你完成自己的第一款App。无论你是编程新手还是有志于扩展技能的开发者,这篇文章都将为你提供一条清晰的学习路径。让我们一起开始这段旅程吧!