实现 如 goole closure 类似功能模块加载函数
2024-08-24 20:08:25
看过goole closure 的同学都知道 其中定义一个类名函数时候只要 inlude("") 想加载某个模块只要require("")就可以利用:
下面给出一个例子:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>分模块加载</title>
<style> </style>
</head>
<body>
<script>
//*********定义加载模块方法 start **************//
(function (window, undefined) {
if (window.define) {
return
}
function isFunction(obj) {
return Object.prototype.toString.call(obj) === "[object Function]"
} var MM = {};
var initModuleName = "initRun"; function require(name) {
if (!MM[name]) {
throw new Error("Module " + name + " is not defined.")
}
var module = MM[name];
if (module.inited === false) {
runModule(name)
}
return module.ret
} function runModule(name) {
var exports = {};
var module = MM[name];
if (isFunction(MM[name].factory)) {
var ret = MM[name].factory.apply(undefined, [require, exports, undefined]);
module.ret = ret === undefined ? exports : ret
} else {
module.ret = MM[name].factory
}
module.inited = true
} function define(name, deps, factory) {
if (MM[name]) {
throw new Error("Module " + name + " has been defined already.")
}
if (isFunction(deps)) {
factory = deps
}
MM[name] = {factory:factory, inited:false};
if (name === initModuleName) {
runModule(name)
}
} window.define = define
})(window);
//*********定义加载模块方法 end **************// //下面给一个使用的例子
(function(){
define('View/test',function(require){
var testObj = function(){};
testObj.prototype = {
test : function(){
alert("我是小测试");
}
};
return testObj;
});
//上面定义了当模块为initRun时候启动模块
define('initRun',function(require){
var test = require('View/test') ;
var testObj = new test; testObj.test(); }) })() </script>
</body>
</html>
最新文章
- python 数据类型---文件二
- Win7 64位 MinGW环境测试SDL2.0.3
- C++/MFC如何启动另一个应用程序并获取其进程 ID
- C# explicit与implicit
- WCF 之 OperationContract
- bzoj1072
- 函数对象的prototype总结
- spring xml配置标签详解
- 敏捷冲刺(Beta版本)
- WorkStation 虚拟机迁移到 ESXi的后续处理.
- 美国运营商推送假5G图标:用户当场蒙圈了
- django-xss攻击原理与防范
- LAXCUS大数据操作系统节点挂掉后的处理
- 【巷子】---Mock---基本使用
- Json解析数据的简单使用
- python learning Exception &; Debug.py
- noi题库(noi.openjudge.cn) 1.11编程基础之二分查找T01、02、04
- SQL_异化
- java Web监听器实现定时发送邮件
- 对数损失函数(Logarithmic Loss Function)的原理和 Python 实现
热门文章
- .Net Core 自动化部署:使用jenkins部署到linux docker容器运行
- mysql安装 卸载 查字符集编码
- 初学python - 使用pip安装扩展库
- ocp最新考试题库:052新考题及答案整理-36
- 百度联盟广告 http://cpro.baidustatic.com/cpro/ui/c.js
- “全栈2019”Java第五十七章:多态与构造方法详解
- classnofoundexception:org.springframework.ui.freemarker.FreeMarkerConfigurationFactory
- 2019 HEOI游记(真-退役记)
- (STM32F4) Timer Compare mode 操作
- nginx如何设置禁止访问文件或文件夹