【Seajs源码分析】1. 整体架构
seajs是一个非常流行的模块开发引擎,目前项目中使用比较多,为了深入了解已经改进seajs我阅读了他的源码,希望对自己的代码生涯能有所启发。
本文说介绍的是指seajs2.3.3版本。
首先seajs的源编码结构如下:
intro.js 闭包结构的前半部分(类似于左括号)
sea.js 版本和全局变量
util-lang.js 类型语言增强
util-events.js 自定义事件
util-deps.js 依赖提取
util-path.js 路径处理
util-request.js url请求模块
config.js 配置模块
module.js 核心模块 包模块
outro.js 闭包后半部分(类似于右括号)
其中intro.js 和outro.js把其他文件包在一个闭包环境内从而避免影响其他全局变量,在调试的时候可以依次引入以上文件,调试时,注释掉intro.js和outro.js即可。
sea.js 设置了全局变量seajs和data,版本号等等
util-lang.js对类型的判断进行了增强,可以更方便的判断对象类型
util-events.js一个小型事件处理器,在后面会用到,可以为对象添加事件,监控事件并触发回调函数
util-deps.js一个依赖提取器,可以将一段代码中require到的模块提取出来,就是分析一段代码中的依赖模块
util-path.js路径处理器,对模块的唯一ID,也就是路径进行各种处理,包括添加js,css等后缀,别名,变量的解析设置,添加跟路径等等
util-request.js动态代码加载器,对指定的js或css url进行动态加载
config.js配置方法,通过这些方法可以对seajs进行配置
module.js 包模块,定义了包的对象,包的基本方法等等
后面会对这些源码进行逐一分析。
【Seajs源码分析】1. 整体架构的更多相关文章
- jQuery 2.0.3 源码分析core - 整体架构
拜读一个开源框架,最想学到的就是设计的思想和实现的技巧. 废话不多说,jquery这么多年了分析都写烂了,老早以前就拜读过, 不过这几年都是做移动端,一直御用zepto, 最近抽出点时间把jquery ...
- jQuery源码分析系列 : 整体架构
query这么多年了分析都写烂了,老早以前就拜读过, 不过这几年都是做移动端,一直御用zepto, 最近抽出点时间把jquery又给扫一遍 我也不会照本宣科的翻译源码,结合自己的实际经验一起拜读吧! ...
- 【Canal源码分析】整体架构
本文详解canal的整体架构. 一.整体架构 说明: server代表一个canal运行实例,对应于一个jvm instance对应于一个数据队列 (1个server对应1..n个instance) ...
- Tomcat源码分析 -- Tomcat整体架构
引用链接:https://blog.csdn.net/w1992wishes/article/details/79242797
- JavaScript 模块化及 SeaJs 源码分析
网页的结构越来越复杂,简直可以看做一个简单APP,如果还像以前那样把所有的代码都放到一个文件里面会有一些问题: 全局变量互相影响 JavaScript文件变大,影响加载速度 结构混乱.很难维护 和后端 ...
- [阿里DIN] 深度兴趣网络源码分析 之 整体代码结构
[阿里DIN] 深度兴趣网络源码分析 之 整体代码结构 目录 [阿里DIN] 深度兴趣网络源码分析 之 整体代码结构 0x00 摘要 0x01 文件简介 0x02 总体架构 0x03 总体代码 0x0 ...
- Duilib源码分析(六)整体流程
在<Duilib源码分析(一)整体框架>.<Duilib源码分析(二)控件构造器—CDialogBuilder>以及<Duilib源码分析(三)XML解析器—CMarku ...
- Duilib源码分析(一)整体框架
Duilib界面库是一款由杭州月牙儿网络技术有限公司开发的界面开源库,以viksoe项目下的UiLib库的基础上开发(此后也将对UiLib库进行源码分析):通过XML布局界面,将用户界面和处理逻辑彻底 ...
- zeromq源码分析笔记之架构(1)
1.zmq概述 ZeroMQ是一种基于消息队列的多线程网络库,其对套接字类型.连接处理.帧.甚至路由的底层细节进行抽象,提供跨越多种传输协议的套接字.引用云风的话来说:ZeroMQ 并不是一个对 so ...
随机推荐
- c调用c++编的dll,c++调用c编写的dll,extern “C”的用法
转自:http://blog.csdn.net/life_is_too_hard/article/details/52137271 c和c++不能直接相互调用,主要是因为c++有重载函数的功能,为了区 ...
- mysql5.6创建索引导致锁表阻塞查询
结论:添加索引时,若果有对该表的慢查询,会导致索引添加延时等待 添加索引语句:alter table tb_name add index idx_xx(col_name); 执行添加索引的SQ ...
- 20145322第九周JAVA程序设计基础学习总结
20145322第九周JAVA程序设计基础学习总结 JDBC简介 JDBC全名Java DataBase Connectivity,是java联机数据库的标准规范.它定义一组标准类与接口,应用程序需要 ...
- 重新想,重新看——CSS3变形,过渡与动画②
本篇文章主要用来归纳总结CSS3变形属性. CSS3变形属性大致可以分为以下三个部分: 变形控制属性 2D变形函数 3D变形函数 下面将对其一一进行分析: 1.变形控制属性 所谓的变形控制属性主要指“ ...
- 如何调试ubifs文件系统
注意内核版本为4.9 在drivers/mtd/ubi/debug.h中加入DEBUG的定义,如下 #ifndef __UBI_DEBUG_H__#define __UBI_DEBUG_H__#def ...
- CSS样式 vertical-align:middle 垂直居中生效情况
vertical-align:middle 是依赖div内子元素最高的行高来实现对某元素居中的 -------不存在浮动时可以直接生效垂直居中 HTML .box1{ display: table- ...
- How To Use Coordinates To Extract Sequences In Fasta File
[1] bedtools (https://github.com/arq5x/bedtools2) here is also bedtools (https://github.com/arq5x/be ...
- Spring MVC 处理中文乱码
<filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>or ...
- 自学Java测试代码 - 简单地Student类
2017-08-23 23:45:38 writer:pprp 写这个还蛮开心的 package test; public class Student { //创建成员变量 String name ...
- [小问题笔记(八)] 常用SQL(读字段名,改字段名,打印影响行数,添加默认值,查找存储过程等)
读取所有字段,自然排序 declare @fields varchar(max) Select @fields=ISNULL(@fields,'')++name+',' from syscolumns ...