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. 整体架构的更多相关文章

  1. jQuery 2.0.3 源码分析core - 整体架构

    拜读一个开源框架,最想学到的就是设计的思想和实现的技巧. 废话不多说,jquery这么多年了分析都写烂了,老早以前就拜读过, 不过这几年都是做移动端,一直御用zepto, 最近抽出点时间把jquery ...

  2. jQuery源码分析系列 : 整体架构

    query这么多年了分析都写烂了,老早以前就拜读过, 不过这几年都是做移动端,一直御用zepto, 最近抽出点时间把jquery又给扫一遍 我也不会照本宣科的翻译源码,结合自己的实际经验一起拜读吧! ...

  3. 【Canal源码分析】整体架构

    本文详解canal的整体架构. 一.整体架构 说明: server代表一个canal运行实例,对应于一个jvm instance对应于一个数据队列 (1个server对应1..n个instance) ...

  4. Tomcat源码分析 -- Tomcat整体架构

    引用链接:https://blog.csdn.net/w1992wishes/article/details/79242797

  5. JavaScript 模块化及 SeaJs 源码分析

    网页的结构越来越复杂,简直可以看做一个简单APP,如果还像以前那样把所有的代码都放到一个文件里面会有一些问题: 全局变量互相影响 JavaScript文件变大,影响加载速度 结构混乱.很难维护 和后端 ...

  6. [阿里DIN] 深度兴趣网络源码分析 之 整体代码结构

    [阿里DIN] 深度兴趣网络源码分析 之 整体代码结构 目录 [阿里DIN] 深度兴趣网络源码分析 之 整体代码结构 0x00 摘要 0x01 文件简介 0x02 总体架构 0x03 总体代码 0x0 ...

  7. Duilib源码分析(六)整体流程

    在<Duilib源码分析(一)整体框架>.<Duilib源码分析(二)控件构造器—CDialogBuilder>以及<Duilib源码分析(三)XML解析器—CMarku ...

  8. Duilib源码分析(一)整体框架

    Duilib界面库是一款由杭州月牙儿网络技术有限公司开发的界面开源库,以viksoe项目下的UiLib库的基础上开发(此后也将对UiLib库进行源码分析):通过XML布局界面,将用户界面和处理逻辑彻底 ...

  9. zeromq源码分析笔记之架构(1)

    1.zmq概述 ZeroMQ是一种基于消息队列的多线程网络库,其对套接字类型.连接处理.帧.甚至路由的底层细节进行抽象,提供跨越多种传输协议的套接字.引用云风的话来说:ZeroMQ 并不是一个对 so ...

随机推荐

  1. c调用c++编的dll,c++调用c编写的dll,extern “C”的用法

    转自:http://blog.csdn.net/life_is_too_hard/article/details/52137271 c和c++不能直接相互调用,主要是因为c++有重载函数的功能,为了区 ...

  2. mysql5.6创建索引导致锁表阻塞查询

    结论:添加索引时,若果有对该表的慢查询,会导致索引添加延时等待   添加索引语句:alter table tb_name add index idx_xx(col_name);   执行添加索引的SQ ...

  3. 20145322第九周JAVA程序设计基础学习总结

    20145322第九周JAVA程序设计基础学习总结 JDBC简介 JDBC全名Java DataBase Connectivity,是java联机数据库的标准规范.它定义一组标准类与接口,应用程序需要 ...

  4. 重新想,重新看——CSS3变形,过渡与动画②

    本篇文章主要用来归纳总结CSS3变形属性. CSS3变形属性大致可以分为以下三个部分: 变形控制属性 2D变形函数 3D变形函数 下面将对其一一进行分析: 1.变形控制属性 所谓的变形控制属性主要指“ ...

  5. 如何调试ubifs文件系统

    注意内核版本为4.9 在drivers/mtd/ubi/debug.h中加入DEBUG的定义,如下 #ifndef __UBI_DEBUG_H__#define __UBI_DEBUG_H__#def ...

  6. CSS样式 vertical-align:middle 垂直居中生效情况

    vertical-align:middle  是依赖div内子元素最高的行高来实现对某元素居中的 -------不存在浮动时可以直接生效垂直居中 HTML .box1{ display: table- ...

  7. 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 ...

  8. Spring MVC 处理中文乱码

    <filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>or ...

  9. 自学Java测试代码 - 简单地Student类

    2017-08-23  23:45:38 writer:pprp 写这个还蛮开心的 package test; public class Student { //创建成员变量 String name ...

  10. [小问题笔记(八)] 常用SQL(读字段名,改字段名,打印影响行数,添加默认值,查找存储过程等)

    读取所有字段,自然排序 declare @fields varchar(max) Select @fields=ISNULL(@fields,'')++name+',' from syscolumns ...