MUI、 HTML5+、 HBuilder 介绍

MUI 介绍

  • http://dev.dcloud.net.cn/mui/
  • MUI 是一个轻量级的前端框架。 MUI 以 iOS 平台 UI 为基础,补充部分 Android 平台特有的 UI 控件。 MUI 不依赖任何第三方 JS 库,压缩后的 JS 和 CSS 文件仅有 100+K 和 60+K, 可以根据自己的需要,自定义去下载对应的模块。并且 MUI 编写的前端, 可以打包成 APK 和 IPA 安装文件, 在手机端运行。也就是,编写一套代码,就可以在 Android、IOS 下运行。
  • API 地址: http://dev.dcloud.net.cn/mui/ui/

H5+

Android/IOS 的安装包。
http://www.dcloud.io/

MUI 前端开发.

创建项目/页面/添加 MUI 元素

创建 MUI 移动 App 项目

页面创建,添加组件

<!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" />
		<script type="text/javascript" charset="utf-8"> mui.init(); </script>
	</head>

	<body>
		<header class="mui-bar mui-bar-nav">
			<h1 class="mui-title">登录页面</h1>
		</header>
		<div class="mui-content">
			<form class="mui-input-group">
				<div class="mui-input-row">
					<label>用户名</label>
					<input type="text" class="mui-input-clear" placeholder="请输入用户名">
				</div>
				<div class="mui-input-row">
					<label>密码</label>
					<input type="password" class="mui-input-password" placeholder="请输入密码">
				</div>
				<div class="mui-button-row">
					<button type="button" class="mui-btn mui-btn-royal">确认</button>
					<button type="button" class="mui-btn mui-btn-danger">取消</button>
				</div>
			</form>
		</div>
	</body>

</html>

获取页面元素/添加点击事件

获取页面元素

mui.plusReady(function() {
				var username = document.getElementById("username");
				var password = document.getElementById("password");
				var confirm = document.getElementById("confirm");
				
				mui(".mui-button-row").on('tap', '.mui-btn', function() {
					alert("按下按钮")
				})

				alert(username.value);
			});
  • 批量绑定页面元素的点击事件
mui(".mui-button-row").on('tap', '.mui-btn', function() {
					alert("按下按钮")
				})
  • 使用原生 JS 的事件绑定方式
// 绑定事件
confirm.addEventListener("tap", function() {
	alert("按下按钮");
});

发起 ajax 请求

前端

当我们点击确认按钮的时候, 将用户名和密码发送给后端服务器

//发送ajax请求
mui.ajax('http://192.168.1.103:9000/login', {
	data: {
		username: username.value ,
		password: password.value
	},
	dataType: 'json', //服务器返回json格式数据
	type: 'post', //HTTP请求类型
	timeout: 10000, //超时时间设置为10秒;
	headers: {
		'Content-Type': 'application/json'
	},
	success: function(data) {
		//可以使用console.log打印数据,一般用于调试
		console.log(data)
	},
	error: function(xhr, type, errorThrown) {
		//异常处理;
		console.log(type);
	}
});

后端

基于 SpringBoot 编写一个 web 应用, 主要是用于接收 ajax 请求, 响应一些数据到前端

新建一个springboot项目,导入相关依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>cn.xzzz2020</groupId>
    <artifactId>demo_1</artifactId>
    <version>1.0-SNAPSHOT</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.5.RELEASE</version>
    </parent>


    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.12</version>
        </dependency>
    </dependencies>

</project>

编写一个controller与app进行响应

@RestController
public class LoginController {

    @RequestMapping("login")
    public Map login(@RequestBody User user){
        System.out.println(user);
        Map<String, Object> map = new HashMap<String, Object>();
        if ("tom".equals(user.getUsername()) && "123".equals(user.getPassword())){
            map.put("success",true);
            map.put("messqge","登陆成功");
        }else {
            map.put("success",false);
            map.put("messqge","登陆失败,请检查用户名和密码是否正确");
        }
        return map;
    }
}

编写pojo实体类User

@Data
public class User {
    private String username;
    private String password;
}

响应结果:

字符串转 JSON 对象以及 JSON 对象转字符串

将 JSON 对象转换为字符串

// 使用JSON.stringify可以将JSON对象转换为String字符串
console.log(JSON.stringify(data));

将字符串转换为 JSON 对象

var jsonObj = JSON.parse(jsonStr)

页面跳转

if(data.success) {//如果登录成功
	//打开关于页面
	mui.openWindow({
		url: 'login_success.html',
		id: 'login_success.html'
	});
} else {
	//打开关于页面
	mui.openWindow({
		url: 'login_failed.html',
		id: 'login_failed.html'
	});

}

App 客户端缓存操作

大量的 App 很多时候都需要将服务器端响应的数据缓存到手机 App 本地。.

在 App 中缓存的数据, 就是以 key-value 键值对来存放的。

将数据放入到本地缓存中

var user = {
	username: username.value,
	password: password.value
}
//将对象数据放到缓存中,需要转换成字符串
plus.storage.setItem("user",JSON.stringify(user))

从本地缓存中读取数据,并显示到页面上

mui.plusReady(function(){
	//从本地缓存中获取数据
	var userStr =  plus.storage.getItem("user");
	var user = JSON.parse(userStr);
	var username = document.getElementById("username");
	username.innerHTML = user.username;
})

测试