js模块开发(同步模块)实现原理
来源:互联网 发布:浪潮税控开票软件 编辑:程序博客网 时间:2024/05/04 15:34
const F = {};//定义模块管理器F.define = function (str, fn) { var parts = str.split('.'), old = parent = this, i = len = 0; if (parts[0] === 'F') { parts = parts.slice(); } if (parts[0] === 'define' || parts[0] === 'modules') { return; } for (len = parts.length; i < len; i++) { if (typeof parent[parts[i]] === 'undefined') { parent[parts[i]] = {}; } old = parent; parent = parent[parts[i]]; } if (fn) { old[parts[--i]] = fn(); } return this;}//模块调用方法F.module = function () { var args = Array.from(arguments), fn = args.pop(), parts = args[0] && args[0] instanceof Array ? args[0] : args, modules = [], modIDs = '', i = 0, ilen = parts.length, parent, j, jlen; while (i < ilen) { if (typeof parts[i] === 'string') { parent = this; modIDs = parts[i].replace(/^F./, '').split('.'); for (j = 0; j < modIDs.length; j++) { parent = parent[modIDs[j]] || false; } modules.push(parent); } else { modules.push(parts[i]); } i++; } fn.apply(null, modules);}
定义人和动物模版F.define('person', function () { return { sayHello: function () { alert('hello'); } } });F.define('animal', function () { return { sayWang: function () { alert('wang wang'); } } });引入模版,并调用定义的模版方法F.module(['man', 'animal'], function (man, dog) { man.sayHello(); dog.sayWang(); });
阅读全文
1 0
- js模块开发(同步模块)实现原理
- js模块的实现
- HTML5+JS游戏开发模块----按键模块
- JS模块加载器加载原理及实现一个CMD模块加载器
- node.js异步转同步 fibers模块
- laravel 实现 模块式开发
- nginx实现简单模块开发
- tomcat原理及实现-----tomcat模块DIY(第一篇)
- tomcat原理及实现-----tomcat模块模块化(第二篇)
- upstream模块(开发)
- js模块
- js 模块
- js模块
- 如何实现一个微擎模块开发we7模块开发
- nginx http 模块开发config原理
- Nginx模块开发与原理剖析(2013)
- 【Node.js基础篇】(十)使用net模块和Readline模块实现Socket通信
- co模块的实现原理的理解
- Visible Trees(容斥原理)
- [NOIP模拟赛Day1]轰炸
- BZOJ 1370: [Baltic2003]Gang团伙 并查集题解
- while循环中的switch语句
- freemarker导出word示例
- js模块开发(同步模块)实现原理
- 顶层const和底层const
- hdu6045 Is Derek lying
- java 语言学习总结
- 集合框架——LinkedList
- javaScript继承
- hdu6033 Add More Zero
- Mac下安装与配置MySQL
- 最大流 https://comzyh.com/blog/archives/568/