前一段时间,由于一些事吧这个习惯落下了,如今争取从新捡起来。javascript
最近开始自学requireJS,为了更好的掌握,因此写出一个自我理解的博客供参考。html
分割线-------------------------java
首先,学习requireJS,要知道什么是requireJS.node
requireJS是一个可在js和node环境下运行的一个很是小巧的一个AMD规范下的js模块载入框架,通俗的理解为模块加载器。浏览器
相信开始学习requireJS的必定对JS代码的模块化有一个初步的了解了。而requireJS主要解决了两大问题框架
第一。在传统的模块化封装中必定对那难堪入目的引入方式和引入的前后顺序有很大的排斥和烦恼。异步
<script type="text/javascript" src="a.js"></script> <script type="text/javascript" src="b.js"></script> <script type="text/javascript" src="c.js"></script> <script type="text/javascript" src="d.js"></script> <script type="text/javascript" src="e.js"></script> <script type="text/javascript" src="f.js"></script> <script type="text/javascript" src="g.js"></script> <script type="text/javascript" src="h.js"></script> <script type="text/javascript" src="i.js"></script> <script type="text/javascript" src="j.js"></script>
而requireJS很好的解决了这个问题,(在以后的讲述中会讲到解决方式)async
第二。相信你们应该也遇到过JS阻塞浏览器渲染这个问题。模块化
<!DOCTYPE html> <html> <head> <title></title> </head> <body> <span>hello world</span> <script type="text/javascript"> alert('1'); </script> </body> </html>
你会发现,浏览器运行后会先执行alert,这时候页面应该是一片空白,点击肯定后在加载body中的内容。函数
这就是JS阻塞浏览器渲染致使的。
有写同窗就会说,能够增长async和defer什么的,也能够避免出现阻塞!
其实这个想法很好,我以前也是这么想的。可是我没考虑到的是,当引入外部js过多的状况下,这种方式很差控制异步加载的顺序,致使出现错误。
而如何控制加载顺序,那么就有回到了第一个问题了。requireJS会有好的帮咱们处理好这些顾虑。
这也就是咱们下一章要讲的依赖的问题。
这里顺便给同窗们简单的描述下AMD和CMD的概述和区别
AMD:是"Asynchronous Module Definition"的缩写,意思就是"异步模块定义"。它采用异步方式加载模块,模块的加载不影响它后面语句的运行。全部依赖这个模块的语句,都定义在一个回调函数中,等到加载完成以后,这个回调函数才会运行。
CMD:是"Common Module Definition"的缩写,意思就是“经常使用模块定义”。它采用的是延迟加载模块,使用的时候加载所须要的模块,定义在惟一的参数里面边封装,边加载,边依赖。
AMD和CMD的本质区别就是:amd采用的是依赖前置,而cmd采用的是延迟依赖。
requireJS的初步了解先讲到这里,相信你们应该和我同样,有了必定的了解。
下一章节描述,requireJS的依赖和经常使用的API。也但愿和你们能共同进步