IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> javascript 闭包环境异步模块模式,异步加载文件和回调函数取得接口 -> 正文阅读

[JavaScript知识库]javascript 闭包环境异步模块模式,异步加载文件和回调函数取得接口

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<div id="test">这是内容</div>
		<script language="javascript">
		~(function(F){
			var moduleCache={};
		})((function(){
			return window.F={};
		})());
		F.module=function(url,modDeps,modCallback){
			var args=[].slice.call(arguments),
			callback=args.pop(),
			deps=(args.length&&args[args.length-1] instanceof Array)?args.pop():[],
			url=args.length?args.pop():null,
			//依赖模块序列
			params=[],
			//未加载的依赖模块数量统计
			depsConut=0,
			i=0,
			//依赖模块序列长度
			len;
			//获取依赖模块长度
			if(len=deps.length){
				while(i<len){
					(function(i){
						depsConut++;
						loadModule(deps[i],function(mod){
							//为依赖模块序列中添加依赖模块接口引用
							params[i]=mod;
							depsConut--;
							//如果依赖模块全部加载
							if(depsConut===0){
								//在模块缓存器中矫正此模块,并执行构造函数
								setModule(url,params,callback);
							}
						});
					})(i);
					i++;
				}
			}else{
				setModule(url,[],callback);
			}
		};
		var moduleCache={},setModule=function(moduleName,params,callback){},
		loadModule=function(moduleName,callback){
			var _module;
			if(moduleCache[moduleName]){
				_module=moduleCache[moduleName];
				if(_module.status==='loaded'){
					setTimeout(callback(_module.exports),0);
				}else{
					_module.onload.push(callback);
				}
			}else{
				moduleCache[moduleName]={
					moduleName:moduleName,//模块ID
					status:'loading',//模块对应文件加载状态,默认加载中
					exports:null,//模块接口
					onload:[callback]//模块对应文件加载完成回调函数缓冲器
				};
				loadScript(getUrl(moduleName));	
				//loadStyle(getCss(moduleName));测试添加css样式的
			}
		},
		getUrl=function(moduleName){
			return String(moduleName).replace(/\.js$/g,'')+'.js';
		},
		/**
		getCss=function(moduleName){
			return String(moduleName).replace(/\.css$/g,'')+'.css';
		},
		loadStyle=function(src){
			var _style=document.createElement('link');
			_style.type="text/css";
			_style.rel="stylesheet";
			_style.href=src;
			document.getElementsByTagName('head')[0].appendChild(_style);
		},
		**/
		loadScript=function(src){
			var _script=document.createElement('script');
			_script.type='text/javascript';
			_script.charset='UTF-8';
			_script.async=true;
			_script.src=src;
			document.getElementsByTagName('head')[0].appendChild(_script);
		};
		setModule=function(moduleName,params,callback){
			var _module,fn;
			if(moduleCache[moduleName]){
				_module=moduleCache[moduleName];
				_module.status='loaded';
				_module.exports=callback?callback.apply(_module,params):null;
				while(fn=_module.onload.shift()){
					fn(_module.exports);
				}
			}else{
				callback&&callback.apply(null,params);
			}
		};
		F.module(['js/com'],function(dom){
			dom.html('test','成功');
		});
		//F.module(['js/sty'],function(sty){});测试css的
		</script>
	</body>
</html>

//这里是dom模块的文件在js文件夹内js/dom.js

F.module('js/dom',function(){
			return{
				g:function(id){
					return document.getElementById(id);
				},
				html:function(id,html){
					if(html){
						this.g(id).innerHTML=html;
					}else{
						return this.g(id).innerHTML;
					}
				},
				trim:function(str){
					return str.replace(/^\s+|\s+$/g,'');
				}
			}
		});
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-10-18 17:18:34  更:2021-10-18 17:19:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:22:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码