今天是2015年12月4日,天气较为阴冷。(习惯性记下日期和天气,总要留些回忆给以后)

学习的最佳捷径是模仿,所以如果想快速提高javascript技术,捷径就是去读大神们的优秀源码。就像我们学说话一样,听多了,模仿多了,也就会听会说了。

听说“懂得一个道理而不去奉行它,那就是还没有懂得这个道理”。本着这个宗旨,我今天开始学习seajs源码,希望学习完以后能达到以下目的:

1、Get一个新技能,能熟练掌握seajs的使用,并将它用到一个项目中(好吧,我承认是因为seajs比较时髦,而我out了);

2、能从中向玉伯大神学几招,以便提升一下自己做的东西的专业水准(本着“不想当**的**不是好**”的心态);

解读源码的办法

不再啰嗦,先来看看我怎么去解读源码。

解读seajs源码,就像拆一个收音机,首先得搞清楚它是干啥的,怎么干的,原理是啥,都由哪些部件和模块组成,用了些什么零件,零件分别承担什么工作。

那么首先,得了解seajs是干啥的。我对seajs所知有限,在各处博客论坛上走马观花转悠了一圈,只知道它能干这些事:

1、依赖管理;

想像下这样的场景,一个html页面内引入了a.js和b.js两个文件,当b.js的某个功能的实现,依赖于a.js中的某个方法时,此时如果a.js加载顺序在b.js后面,

那么b.js调用a.js中的某个方法干活时,肯定会报如下错误:

因为这时,b.js就是依赖a.js干活的,它们之间存在一种依赖关系。

如果一个页面中有很多个js文件,相互之间的依赖关系很复制,那么管理这些js文件的加载顺序来就是一个噩梦,而seajs的依赖管理功能可以让你从这种噩梦中解脱。

2、代码模块化;

模块化,听起来多么高大上的词。说白了就是把一盘炒好的菜分成佐料、主菜、配菜、调味料、水、油等各个部分。

一个js框架可能有着很多功能,seajs做的就是把它们的各部分功能分开成一个个模块,每个模块放一个js文件中。这样做的好处在于:

a、方便维护,容易定位到bug;

b、方便扩展,要扩展某个新功能加js文件即可,不要再到处翻;

seajs分模块的办法是所有javascript代码都要遵循CMD规范,seajs提供了几个好用又简单的API来管理模块;

seajs源码学习(一)的更多相关文章

  1. seajs 源码解读

    之前面试时老问一个问题seajs 是怎么加载js 文件的 在网上找一些资料,觉得这个写的不错就转载了,记录一下,也学习一下 seajs 源码解读 seajs 简单介绍 seajs是前端应用模块化开发的 ...

  2. Java集合专题总结(1):HashMap 和 HashTable 源码学习和面试总结

    2017年的秋招彻底结束了,感觉Java上面的最常见的集合相关的问题就是hash--系列和一些常用并发集合和队列,堆等结合算法一起考察,不完全统计,本人经历:先后百度.唯品会.58同城.新浪微博.趣分 ...

  3. jQuery源码学习感想

    还记得去年(2015)九月份的时候,作为一个大四的学生去参加美团霸面,结果被美团技术总监教育了一番,那次问了我很多jQuery源码的知识点,以前虽然喜欢研究框架,但水平还不足够来研究jQuery源码, ...

  4. MVC系列——MVC源码学习:打造自己的MVC框架(四:了解神奇的视图引擎)

    前言:通过之前的三篇介绍,我们基本上完成了从请求发出到路由匹配.再到控制器的激活,再到Action的执行这些个过程.今天还是趁热打铁,将我们的View也来完善下,也让整个系列相对完整,博主不希望烂尾. ...

  5. MVC系列——MVC源码学习:打造自己的MVC框架(三:自定义路由规则)

    前言:上篇介绍了下自己的MVC框架前两个版本,经过两天的整理,版本三基本已经完成,今天还是发出来供大家参考和学习.虽然微软的Routing功能已经非常强大,完全没有必要再“重复造轮子”了,但博主还是觉 ...

  6. MVC系列——MVC源码学习:打造自己的MVC框架(二:附源码)

    前言:上篇介绍了下 MVC5 的核心原理,整篇文章比较偏理论,所以相对比较枯燥.今天就来根据上篇的理论一步一步进行实践,通过自己写的一个简易MVC框架逐步理解,相信通过这一篇的实践,你会对MVC有一个 ...

  7. MVC系列——MVC源码学习:打造自己的MVC框架(一:核心原理)

    前言:最近一段时间在学习MVC源码,说实话,研读源码真是一个痛苦的过程,好多晦涩的语法搞得人晕晕乎乎.这两天算是理解了一小部分,这里先记录下来,也给需要的园友一个参考,奈何博主技术有限,如有理解不妥之 ...

  8. 我的angularjs源码学习之旅2——依赖注入

    依赖注入起源于实现控制反转的典型框架Spring框架,用来削减计算机程序的耦合问题.简单来说,在定义方法的时候,方法所依赖的对象就被隐性的注入到该方法中,在方法中可以直接使用,而不需要在执行该函数的时 ...

  9. ddms(基于 Express 的表单管理系统)源码学习

    ddms是基于express的一个表单管理系统,今天抽时间看了下它的代码,其实算不上源码学习,只是对它其中一些小的开发技巧做一些记录,希望以后在项目开发中能够实践下. 数据层封装 模块只对外暴露mod ...

随机推荐

  1. 2019-8-31-C#-通过-probing-指定-dll-寻找文件夹

    title author date CreateTime categories C# 通过 probing 指定 dll 寻找文件夹 lindexi 2019-08-31 16:55:58 +0800 ...

  2. UVA_489:Hangman Judge

    Language:C++ 4.8.2 #include<stdio.h> #include<string.h> int main(void) { ]; ]; ]; ]; // ...

  3. Java面向对象----继承概念,super关键字

    继承概念: 继承需要符合的关系  is-a  , 父类通用更抽象,子类更特殊更具体 类之间的关系 继承体现 组合体现 实现接口体现 继承的意义 代码重用 体现不同抽象层次 extends关键字 Sup ...

  4. Vue组件跨层级通信

    正常组件间通信 父->子组件 是通过属性传递 子->父组件 是通过this.$emit()传递 this.$emit()返回的是this,如果需要一些值 可使用callback方式传递 p ...

  5. javascript简介 标签: javascript 2015-11-13 12:13 1712人阅读 评论(39)

    JavaScript是一种属于网络的脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果.通常JavaScript脚本是通过嵌入在HTML中来实现 ...

  6. EF ObjectStateManager无法跟踪具有相同键的多个对象 标签: EasyUIc# 2015-09-05 11:01 1181人阅读

    最近做一个项目,因为是重构,好多代码是搬过来的,但是因为框架不同,所以搬过来也出现了很多问题,前几天在调试的时候,就碰到一个EF框架经常出现的问题:ObjectStateManager中已存在具有同一 ...

  7. Navicat连接MySQL8.0版本时 建议升级连接客户端这个提示怎么办

    开始->mysql 8.0 command line client ->执行下面的命令//开启mysql服务mysql.server start//进入mysqlmysql -u root ...

  8. MapReduce数据流-Partiton&Shuffle

  9. php开发微信支付获取用户地址

    http://mp.weixin.qq.com/s/uNpWE_Z5RZ48PDIWkmGBYQ 使用微信获取地址信息是和微信支付一道申请的,微信支付申请通过,就可以使用该功能. 微信商城中,使用微信 ...

  10. python如何自动发送邮件

    #coding=utf-8 import smtplib from email.mime.text import MIMEText from email.mime.application import ...