layui源码详细分析系列之模块加载机制
来源:互联网 发布:好搜小说软件 编辑:程序博客网 时间:2024/06/17 03:46
这个系列的文章主要是分析layui源码,所以文章是针对于主要的功能或者单独的内置模块来书写的,本章主要分析layui框架自己的模块加载机制的实现。
上一篇文章是通过MarkDown来书写,感觉排版比之前的好多了,之后就采用MarkDown来编写了。今天天气热的公司空调都挂了,直接接入正题,真是热……
该框架的模块加载机制主要是使用define和use这两个方法来实现的,define方法适用于定义模块,use方法是用于使用模块,它们都定义在Lay构造函数的原型对象上,而window.layui = new Lay();,所以可以通过layui.define、layui.use来直接调用。
define以及use方法的定义如下:
Lay.fn.define = function(deps, callback) { // 相关处理代码};
Lay.fn.use = function(apps, callback, exports) { // 相关处理代码};
在该官网上介绍了该框架的几种使用,常用有两种方式:
1、自定义模块,在自己定义的模块中使用相关的模块,如下面所示:
index.js文件代码如下: layui.define(['layer'], function(exports) { var layer = layui.layer; exports('index', {}); })
在html文件中使用index模块: layui.config({ base: 'index所在目录路径' }).use('index');
2、直接使用use方法
layui.use(['layer'], function() { var layer = layui.layer;});
本章就使用第一种方式来讲解layui框架的模块加载机制,例子就使用上面1中的例子,具体分析步骤如下:
1、先分析index.js中define方法的逻辑处理
2、再分析use方法的逻辑处理
我详细分析了define方法执行的每一步并绘制了逻辑图,具体如下:
具体的步骤如上图所示,实际上define还会调用use方法,虽然define方法是定义模块的实际上还调用了use方法。
use方法的逻辑处理的每一步分析,实际上在define中就具体分析了,在单独使用use的过程中,大部分地处理是相同的,但还是有所区别,具体如下图所示:
因为相关的逻辑分析细节比较多,通过图的方式会更加直观,文字描述会比较繁琐。
具体的代码分析注释以及逻辑分析图我会上传到我的GitHub上,该框架的模块加载机制主要就是通过define以及use来实现,内部实际上维护了config.status来记录模块的加载状态,维护config.modules来存储模块的URL,内部通过script标签来加载模块。
通过今天的学习,对于简单模块加载机制有了一定的认知,对于面向对象以及相关代码的组织也有了一定的理解,不出意外,明天会分析element.js模块。
- layui源码详细分析系列之模块加载机制
- layui源码详细分析系列之流加载模块
- layui源码详细分析系列之element模块以及自定义事件机制
- layui源码详细分析系列之文件上传模块
- layui源码详细分析系列之富文本编辑器模块
- layui源码详细分析系列之模板引擎
- layui源码详细分析之树形菜单
- layui框架详细分析系列之框架主体组织结构
- layui框架详细分析系列之熟悉框架以及提供的页面元素
- Backbone.js源码分析系列之Events模块
- Backbone.js源码分析系列之Model模块
- Backbone.js源码分析系列之Collection模块
- MySQL系列:innodb源码分析之线程并发同步机制
- MySQL系列:innodb源码分析之线程并发同步机制
- Android单排上王者系列之Handler机制源码分析
- Android Apk资源加载机制源码分析以及资源动态加载实现系列文章
- django自动重新加载模块 源码分析
- skynet源码分析(1)--模块加载
- 嵌入式系统学习——S3C2451之RTC时钟
- 启动tomcat,提示: Several ports (8005, 8080, 8009) required by Tomcat v8.0 Server at local
- Poj 1339 poker card game (哈夫曼树)
- vim退出快捷键
- 博弈论学习笔记(二)
- layui源码详细分析系列之模块加载机制
- 算法系列——Permutations II
- Gerrit+Nginx
- 链表面试题之链表逆置、指定前k个逆置
- 程序是what?
- js选择结构
- PAT乙级 1062. 最简分数(20)--简单易错注意细节
- LingCode Range Sum Query 2D
- Android 双进程守护