模块加载系统
2012-02-05 21:41
295 查看
模块加载系统初尝版,2个暴露函数:
加载模块:require(requireLists,callback);
require(['core','dom/selector'],function(){
//coding here,
//callbacks
})
定义模块:define(id,requireLists,callback);
define('id',['core','dom/selector'],function(){
//coding here
//callbacks
})
View Code
加载模块:require(requireLists,callback);
require(['core','dom/selector'],function(){
//coding here,
//callbacks
})
定义模块:define(id,requireLists,callback);
define('id',['core','dom/selector'],function(){
//coding here
//callbacks
})
View Code
(function(win) { loadedModules = {}; var reg_module_name = /(?:^|\/)([^(\/]+)$/; function require(modules, callback) { var moduleNames = [], self = arguments.callee; for (var i = 0, l = modules.length; i < l; i++) { var matt = modules[i].match(reg_module_name); moduleNames.push(matt[1]); if (! (matt[1] in loadedModules) && ! detectExist(modules[i])) { appendScript(modules[i]); } } detectLoads(moduleNames, callback); } function define(id, requireModules, callback) { require(requireModules, function() { callback(); loadedModules[id] = 1; }) } function detectExist(module) { var exist = false, scripts = document.getElementsByTagName("script"); for (var i = 0, l = scripts.length; i < l; i++) { if (scripts[i].getAttribute("src") === module + ".js") { exist = true; break; } } return exist; } function appendScript(module) { var script = document.createElement("script"); script.setAttribute("charset", "utf-8"); script.setAttribute("defer", true); script.setAttribute("src", module + ".js"); document.getElementsByTagName("head")[0].appendChild(script); } function detectLoads(modules, callback) { var flag = true, args = arguments, fn = args.callee; for (var i = 0, l = modules.length, el; i < l; i++) { el = modules[i]; if (!loadedModules[el]) { flag = false; break; } } if (flag) { callback(); } else { setTimeout(function() { fn.apply(null, args); }); } } win.require = require; win.define = define; })(this);
相关文章推荐
- 第三章:模块加载系统(requirejs)
- 我的模块加载系统 v17的入门教程2
- 我的模块加载系统 v17的入门教程3
- 我的模块加载系统 v17的入门教程3
- 我的模块加载系统 v21
- Linux如何在系统启动时自动加载模块
- Linux如何在系统启动时自动加载模块
- 我的模块加载系统 v23
- linux之系统引导流程及模块加载卸载简述
- Linux如何在系统启动时自动加载模块
- 我的模块加载系统 v20
- 编译时向内核添加新设备 模块的方式动态的将驱动加入内核,但这种方式加入的驱动程序,当系统重新启动时, 还需要重新用模块的方式进行插入,如果是系统内常用的设备驱动采用这种方式进行加载, 就会很不方便。
- 我的模块加载系统 v11
- Android系统的ko模块加载
- 我的模块加载系统 v14
- 【内核】Linux添加系统调用(静态,非动态加载模块)
- 我的模块加载系统 v13
- 我的模块加载系统 v15
- 我的模块加载系统 v10
- 我的模块加载系统 v9(附例子下载)