Ruby's Louvre

每天学习一点点算法

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

我的模块加载系统 v12

这应该是massFramework发布前的最后一次对模块系统的升级了。本版本最大的改进是,增加对回调函数传参的支持,让模块更加彻底,并且通过对require与内部的resolveCallbacks的重构,对框架对JS文件依赖合并吏加友好。

本版本有以下改进:

  1. 更改dom["@emitter"] 为 dom["@dispatcher"],因为emitter模块更名为dispatcher了。
  2. 经过Q群上的讨论,移除XMLHttpRequest的判定。
  3. 添加error方法,这只是一个空实现,目的是用于调试,用户可以自行重写它。
  4. 重构log方法
  5. 回调函数将根据依赖列表生成参数,实现模块不依赖命名空间进行消息通信(参考自CommonJS的AMD)。

下面是我框架的对应实现,详细用法见文档。

//定义模块
            (function(global,DOC){
                var dom = global[DOC.URL.replace(/(#.+|\W)/g,'')];
                dom.define("node", "class,support,query,data",function($){//依赖列表可以是由空格或逗号隔开的字符串或数组,它是可选的
                    dom.log("node模块")
                });
            })(this,this.document);
//使用模块
            dom.require("ready,support,class",function(dom,support,factory){
                dom.log("mix" in dom,true)//判定是否来自dom模块
                dom.log("cloneAll" in support,true);//判定是否来自support模块
                dom.log(dom.type(factory),true)//判定是否来自class模块, class模块并没有返回值
            });

模块间的通信请见附件中的e.js。

模块加载的示例(115)

dom Framework的部分文档,还差ajax。

相关链接:

我的模块加载系统 v11

我的模块加载系统 v10

我的模块加载系统 v9

我的模块加载系统 v8

我的模块加载系统 v7

我的模块加载系统 v6

如果您觉得此文有帮助,可以打赏点钱给我支付宝1669866773@qq.com ,或扫描二维码

posted on   司徒正美  阅读(2749)  评论(0编辑  收藏  举报

编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
历史上的今天:
2009-10-27 getElementsByAttribute
点击右上角即可分享
微信分享提示