seajs源码分析-运行机制浅析(一)

前端技术发展简直是日新月异,随着angularjs,vuejs,reactjs等等这些框架的不断兴起,转眼间jquery,seajs,Backbone这些框架已经成了清朝的框架了,再加上es6本身对于模块化的支持,也许,seajs模块化在将来的某天可能会彻底成为历时,尽管如此,我认为对于框架的学习,不仅仅是学会怎么用它,更重要的理解其中的一些思想,理解框架的思维,才能干翻框架,框架始终是个辅助。废话到此为止。
其实seajs代码量也就近千行,而且做的事情并不多,也就是模块化和按需异步加载,光光实现这两点需求,我们自己也可以写一个简单的框架,200行代码也许就搞定了,但是框架的使命并不仅仅是能用,这才是我们需要从中学习的。本篇就先系统讲解一下seajs的运行机制。
先介绍一下seajs对外最重要的几个元素,seajs.config,seajs.use,define,require,exports,module
再贴两段伪代码:

    seajs.config({
        base:'./',
        alias:{
            'todomodule':'app-modules/todo'
        },
        paths:{
            'todomodule':'modules/pathtest/todo',
            'app-modules':'app/modules'
        }
    });
    seajs.use('./app.js');

app.js内容如下:

define(function(require,exports,module){
    var todo = require('todomodule');
    ...
});

以上代码,已经是一个seajs项目的骨架了,就是这么简单。
接下来就来说说,看上去的这么点代码,seajs具体做了什么呢。首先来看config方法,这个配置方法暂时不多做细节上的介绍,先提一点,alias和paths变量不要弄混淆了,具体的后面有机会再细说。接下来说说入口函数use,解释use之前,还有个方法论需要普及,seajs最重要的内容其实就是在于模块,也就是模块加载和执行,其实seajs代码理解的逻辑很清晰,只要抓住模块的生命周期来分析代码,就很清晰了,看如下这段代码代表的模块的生命周期:

var STATUS = Module.STATUS = {
  // 1 - The `module.uri` is being fetched
  FETCHING: 1,
  
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值