# 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
``` - 跳转到某个页面并传入参数 ```html
``` - 返回上一页 ```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; } ```