# easy-mobile
**Repository Path**: ericfang/easy-mobile
## Basic Information
- **Project Name**: easy-mobile
- **Description**: 快速搭建移动端单页(SPA)应用,解决让人繁琐的前后跳转动画、无限滚动、请求操作、整体布局等等问题,帮助开发人员快速搭建基础功能。
- **Primary Language**: JavaScript
- **License**: MIT
- **Default Branch**: master
- **Homepage**: http://ezmobile.demo.fangjc1986.com
- **GVP Project**: No
## Statistics
- **Stars**: 9
- **Forks**: 5
- **Created**: 2020-05-28
- **Last Updated**: 2025-08-22
## Categories & Tags
**Categories**: cross-platform-mobiledev
**Tags**: None
## README
# Easy Mobile
- Easy Mobile 用于快速搭建移动端 WebApp 的简易框架。
- 演示地址: http://ezmobile.demo.fangjc1986.com
- git地址:https://gitee.com/ericfang/easy-mobile.git
- 邮件讨论:fangjc1986@qq.com
### 功能
- 完善的路由系统,提供常规前进路由功能,同时支持返回钩子、强制刷新、返回跳过等功能;
- 全局布局组件,提供上中下三层布局结构;
- 无限滚动组件,提供下拉刷新和下拉加载功能;
- 页面切换动画效果,类似 APP 的前进后退效果;
- 所有动画效果均采用 CSS 动画,无论是无限滚动组件还是页面切换动画均丝滑流畅。
- 可直接封装至 hybird APP 打包,无需再做原生页面跳转等繁琐功能;
### 路由跳转函数
- 跳转到某一个页面
```html
{
// 这里的 resp 返回的是已经经过处理后的 data 内容
console.log( resp );
})
```
- request 使用方法2
链式调用 request 函数
```javascript
import {request} from "@/utils/request.util";
// 目前仅提供 get 和 post 方法,其他需要可自行添加。
request("api/address").get({id : 1}).then( resp => {
console.log( resp );
})
```
### 无限滚动
- 基础组件为 `better-scroll` ,在此组件上封装了一层业务逻辑,让开发变得轻松一些;
- 无限滚动组件需要和 `Paginate` 配合使用,`Paginate` 实现比较简单,可自行查看源码;
- 如需修改下拉和上拉样式,可自行修改 `ezm-scroll-box` 组件;
- 下拉加载和上拉加载的完整案例
```html
```
### 待办队列
- 我们都知道单页应用都存在一些小问题,比如:打开一个 dialog, 之后点击浏览器返回按钮,发现 dialog 不会消失,因此在弹出 dialog 的时候,可以把 关闭 dialog 的函数添加到 `待办队列`, 并且在关闭 dialog 的时候,把之前添加进去的 待办函数 移出 `待办队列`。
- 待办列表中的函数会在页面离开之前执行,如果强行点击浏览器返回按钮,则一次性执行全部待办函数,如调用 `navigate` 中的方法进行前进或后退,则会依次(倒序)执行待办函数 (点一次执行一个待办);
- 具体案例在 `demo` 中有比较详细的演示,这里提供一个对 `vant` 的 `Dialog.config` 封装案例
```javascript
let confirm = (content, title = "确认信息", type = 'warning') => {
let dialog = Dialog.confirm({
title: title,
message: content,
});
let task = Events.addWaitTask(() => Dialog.close());
return dialog.then(() => {
Events.removeWaitTask(task);
return Promise.resolve();
}).catch(() => {
Events.removeWaitTask(task);
return Promise.reject();
})
}
```
- Events 对象中包含了返回回调函数 和 待办列表队列,这里只列出经常使用到的待办相关方法
| 方法 | 功能 | 参数 | 返回 | 备注 |
| --- | --- | --- | --- | --- |
|addWaitTask| 添加待办任务 | Function: 待办函数 | WaitForTask : 待办任务 | |
|removeWaitTask| 移除待办任务 | WaitForTask : 待办任,| String: 待办任务id | | 留空则清空所有待办任务 |
- 待办任务 WaitForTask 结构,当使用 `Events.addWaitTask` 的时候, `id` 会自动生成一个 `uuid`,无需手动生成 `id`,
```javascript
export class WaitForTask {
constructor(id, task) {
this.id = id;
this.task = task;
}
id = '';
task = null;
}
```