当前位置: 首页 > news >正文

me.js - 基于angular的前端模块化框架

me.js 框架概述

me.js 是一个自定义的前端 JavaScript 框架,用于构建单页应用(SPA),具有模块化、组件化和路由管理等功能。

核心功能

1. 模块定义和管理

// 定义模块
var that = me.define("moduleName", {components: {// 组件定义},ctrl: function() {// 控制器逻辑}
});

2. 路由和页面管理

// 配置路由
me.config({container: "#main_body",path: "pages/",// 其他配置
});// 页面跳转
me.show("pages/module/page", {showType: 1,style: "pop",param: { /* 参数 */ }
});

3. 组件系统

// 组件注册
components: {"componentName": "pages/path/to/component"
}// 获取组件
me.getCom("componentName", function(com) {// 使用组件
});

4. 数据绑定和作用域管理

// 在控制器中使用作用域
ctrl: function() {that.$scope.variable = "value";that.$scope.function = function() {// 业务逻辑};
}
  1. 全局对象和配置
// 全局配置
me.global.site
me.global.login_data
me.global.enumXXX_map  // 各种枚举映射

使用方式详解

1. 框架初始化

在 index.html 中:

me.config({container: "#main_body",     // 主容器main: "",                    // 主页面path: "pages/",             // 页面路径前缀scroller: ".index_right",   // 滚动容器debug: Config.debug,        // 调试模式cache: false,               // 是否缓存version: version           // 版本号
});// 启动应用
me.run('meApp', []);

2. 模块定义

在各个页面 JS 文件中,如 test.js:

(function () {var that = me.define("caseAdviceList", {// 组件依赖components: {// 可以引入其他组件},// 控制器函数ctrl: function () {// 初始化逻辑Util.initDatePicker();that.$scope.breadcrumbs = me.param().breadcrumbs || [];// 调用其他方法that.switchTab(0);that.getSiteList();},// 自定义方法getSiteList: function () {// 业务逻辑},doSearch: function () {// 搜索逻辑}});
})();

3. 页面跳转和参数传递

// 跳转到新页面
me.show("record/modal/caseView", {showType: 1,style: "pop",param: {case_id: info.case_id}
});// 获取传递的参数
me.param().case_id

4. 组件使用

// 定义组件依赖
components: {"comAllRecordList": "pages/record/components/record/comAllRecordList","comCaseAdviceRecordList": "pages/record/components/record/comCaseAdviceRecordList",
},// 获取并使用组件
me.getCom("comAllRecordList-total", function(com) {that.$scope.comAllRecordList = com;that.listRecord(function (data){that.$scope.comAllRecordList.setData(data, searchParams);});
});

5. 全局功能使用

// 使用全局工具方法
me.global.timeGMTToString();   // 时间格式化// 使用枚举
me.global.enumCaseLibType_key_map.advice.code

核心 API 详解

1. me.define(name, module) 定义一个模块

var module = me.define("moduleName", {components: {},  // 组件依赖ctrl: function() {}  // 控制器
});

2. me.show(path, options) 页面跳转/显示模块

me.show("pages/path/module", {showType: 1,      // 显示类型style: "pop",     // 样式param: {},        // 传递参数isFullPath: true  // 是否完整路径
});

3. me.getCom(name, callback) 获取组件实例

me.getCom("componentName", function(component) {// 使用组件
});

4. me.config(options) 配置框架

me.config({container: "#main_body",  // 容器选择器path: "pages/",          // 页面路径scroller: ".scroller"    // 滚动容器
});

5. me.param() 获取当前模块的参数

var params = me.param();

数据流和状态管理

作用域 ($scope)

ctrl: function() {// 数据绑定that.$scope.data = [];that.$scope.loading = false;// 方法绑定that.$scope.doSomething = function() {// 业务逻辑};
}

组件间通信

// 父组件向子组件传递数据
that.$scope.comAllRecordList.setData(data, searchParams);// 事件监听
me.show("module").on("hide", function(data) {// 处理回调数据
});

实际应用示例

页面模块定义

(function () {var that = me.define("recordList", {components: {"comAllRecordList": "pages/record/components/record/comAllRecordList"},ctrl: function () {// 初始化数据that.$scope.recordList = [];that.$scope.searchString = "";// 初始化功能Util.initDatePicker();that.getDefaultTime();// 加载数据me.getCom("comAllRecordList-total", function(com) {that.$scope.comAllRecordList = com;that.listRecord(function(data){that.$scope.comAllRecordList.setData(data);});});},// 搜索功能doSearch: function(){that.listRecord(function(data){that.$scope.comAllRecordList.setData(data);});},// 数据加载listRecord: function (callback) {// Ajax 请求Util.ajax({method: "POST",data: { /* 请求参数 */ },url: Util.getApiUrl("api/path")}, function (data) {// 处理返回数据that.$scope.recordList = data.list;callback && callback(that.$scope.recordList);});}});
})();
http://www.lryc.cn/news/602211.html

相关文章:

  • 【氮化镓】GaN同质外延p-i-n二极管中星形与三角形扩展表面缺陷的电子特性
  • 基于Vue3.0+Express的前后端分离的任务清单管理系统
  • 学习Python中Selenium模块的基本用法(2:下载浏览器驱动)
  • 【前端】Tab切换时的数据重置与加载策略技术文档
  • 三角洲摸金模拟器(简易版本)(开源)
  • Claude Launcher:支持Kimi K2的Claude Code可视化启动工具
  • ofd文件转pdf
  • iphone手机使用charles代理,chls.pro/ssl 后回车 提示浏览器打不开该网页
  • 【Spring Boot 快速入门】二、请求与响应
  • 搜索引擎高级搜索指令大全(Google、百度等浏览器通用)
  • nvim cspell
  • 打通视频到AI的第一公里:轻量RTSP服务如何重塑边缘感知入口?
  • 中国自然灾害影响及损失数据
  • Ubuntu 安装redis和nginx
  • 【JSqlParser】sql解析器使用案例
  • jimfs:Java内存文件系统,脱离磁盘IO瓶颈利器
  • 全球Wi-Fi室外天线市场洞察2024–2032:规模、驱动因素与技术演进
  • Mybatis_4
  • Focusing on Tracks for Online Multi-Object Tracking—CVPR2025多目标跟踪(TrackTrack)
  • Ethereum:Geth运维实战,geth export与geth import命令的实用性深度评估
  • 使用 Qt Installer Framework(IFW)进行打包
  • 网络安全第14集
  • 8.1 ESP32CAM 服务器 网络摄像头
  • 【mysql】—— mysql中的timestamp 和 datetime(6) 有什么区别,为什么有的地方不建议使用timestamp
  • 深入探索Linux:忙碌的车间“进程”间通信
  • 【Linux】基本指令(2)
  • Linux DNS解析1--终端通过网关或者路由器进行域名解析的原理
  • WAIC 2025深度解析:当“养虎”警示遇上机器人拳击赛
  • 设计模式(二十二)行为型:策略模式详解
  • 发布“悟能”具身智能平台,商汤让机器人像人一样和现实世界交互