seajs源码】的更多相关文章

之前面试时老问一个问题seajs 是怎么加载js 文件的 在网上找一些资料,觉得这个写的不错就转载了,记录一下,也学习一下 seajs 源码解读 seajs 简单介绍 seajs是前端应用模块化开发的一种很好的解决方案.对于多人协作开发的.复杂庞大的前端项目尤其有用.简单的介绍不多说,大家可以到seajs的官网seajs.org参看介绍.本文主要简单地解读一下seajs的源码和模块化原理.如果有描述不实的地方,希望大家指正和交流.注:本文的解析是基于seajs的2.2.1版本. 目录结构 解压s…
网页的结构越来越复杂,简直可以看做一个简单APP,如果还像以前那样把所有的代码都放到一个文件里面会有一些问题: 全局变量互相影响 JavaScript文件变大,影响加载速度 结构混乱.很难维护 和后端(比如Java)比较就可以看出明显的差距.2009年Ryan Dahl创建了node.js项目,将JavaScript用于服务器编程,这标志“JS模块化编程”正式诞生. 基本原理 模块就是一些功能的集合,那么可以将一个大文件分割成一些小文件,在各个文件中定义不同的功能,然后在HTML中引入: var…
乘着周日有点时间,阅读一下玉伯大神的源码. seajs的源码写得真的很好,很是佩服,工整美观不愧是大神,造福百姓. 说起seajs不得不说,AMD和CMD的区别.  CMD 推崇依赖就近,AMD 推崇依赖前置.   事实上我对他们的区别没啥兴趣.关键是requirejs没明显的BUG,seajs明显没BUG.   两者最大区别请看这里:http://www.cnblogs.com/gyjWEB/p/4543945.html   好了,扯正题.   可以先看看别人写的源码解析:https://se…
今天是2015年12月4日,天气较为阴冷.(习惯性记下日期和天气,总要留些回忆给以后) 学习的最佳捷径是模仿,所以如果想快速提高javascript技术,捷径就是去读大神们的优秀源码.就像我们学说话一样,听多了,模仿多了,也就会听会说了. 听说“懂得一个道理而不去奉行它,那就是还没有懂得这个道理”.本着这个宗旨,我今天开始学习seajs源码,希望学习完以后能达到以下目的: 1.Get一个新技能,能熟练掌握seajs的使用,并将它用到一个项目中(好吧,我承认是因为seajs比较时髦,而我out了)…
入口方法 每个程序都有个入口方法,类似于c的main函数,seajs也不例外.系列一的demo在首页使用了seajs.use(),这便是入口方法.入口方法可以接受2个参数,第一个参数为模块名称,第二个为回调函数.入口方法定义了一个新的模块,这个新定义的模块依赖入参提供的模块.然后设置新模块的回调函数,用以在loaded状态之后调用.该回调函数主要是执行所有依赖模块的工厂函数,最后在执行入口方法提供的回调. // Public API // 入口地址 seajs.use = function(id…
模块类和状态类 参照上文的demo,我们结合源码分析在简单的API调用的背后,到底使用了什么技巧来实现各个模块的依赖加载以及模块API的导出. 首先定义了一个Module类,对应与一个模块 function Module(uri, deps) { this.uri = uri this.dependencies = deps || [] this.exports = null this.status = 0 // Who depends on me this._waitings = {} //…
简述 前端开发模块化已经是大势所趋,目前模块化的规范有很多,众所周知的有commonJS,Module/Wrappings和AMD等,而且ES6也着手开始制定模块化机制的实现.类似于c/c++的include,java中的import关键字,在js中也定义了require关键字,用以引进依赖模块. 由于规范的多样性,模块化的实现也是各有各的不同.nodejs遵从的就是commonJS规范,它有着一些形式上的约定: require为函数,该函数接受一个字符串作为模块标示符 require函数返回值…
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…
上个星期写了浅入requirejs的,  大家都知道 require是AMD规范(Asynchronous Module Definition) 来  今天我们一起看看 CMD规范(Common Module Definition) 的seajs 是怎样实现的 seajs比require写的简单, 源码几乎是require的一半,gzip后差距是拉近了,但是仍觉得大.(最近对size很敏感 ,因为领导 大领导抱怨我们h5站点打开慢,今年我们逐步做提速的事情, 我心里暗下一个目标,不管业务简单复杂…
seajs主要做了2件事 1.定义什么是模块,如何声明模块:id.deps.factory.exports ----define=function(id,deps,factory){return exports} 2.管理模块依赖,解决自动加载.本质其实是个加载器loader:id配上路径规则,factory可以提取依赖模块,递归遍历后自动加载js文件 核心的代码是util-path.js和module.js 发现seajs已经修订到3.0.0部分实现有改动,有些地方随手写的,也没求证过估计误人…