requirejs学习笔记
更新日期:
requirejs具有如下优点:
- 防止js加载阻塞页面渲染
使用程序调用的方式加载js,防出现如下丑陋的场景
<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>
使用要点:
在页面底部引入require.js
<script src="js/require.js" data-main="js/main" ></script>
main.js,我把它称为”主模块”,意思是整个网页的入口代码。它有点像C语言的main()函数,所有代码都从这儿开始运行。
在main.js里加载js模块,并调用,可以有回调函数
require.config({ paths: { "jquery": ["http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min","jquery"],//远程cdn库没有加载成功,可以加载本地的库 "tiles": "jquery.tiles",//由于设置了main,相当于设置了默认位置js/jquery.tiles "slide": "slide" } }); require(['jquery', 'tiles', "slide"],function(){ });
还可以改变基目录baseUrl
require.config({ paths: { "jquery": "lib/jquery.min", "underscore": "lib/underscore.min", "backbone": "lib/backbone.min" } }); require.config({ baseUrl: "js/lib", paths: { "jquery": "jquery.min", "underscore": "underscore.min", "backbone": "backbone.min" } });
允许加载非规范的模块(即没有define定义的)
shim: { 'jquery.scroll': { deps: ['jquery'], exports: 'jQuery.fn.scroll' } }
require.config()接受一个配置对象,这个对象除了有前面说过的paths属性之外,还有一个shim属性,专门用来配置不兼容的模块。具体来说,每个模块要定义(1)exports值(输出的变量名),表明这个模块外部调用时的名称;(2)deps数组,表明该模块的依赖性。