一、使用RequireJs的好处
最早的时候,所有Javascript代码都写在一个文件里面,只要加载这一个文件就够了。后来,代码越来越多,一个文件不够了,必须分成多个文件,依次加载。下面的网页代码,相信很多人都见过。
<script type="text/javascript" src="./js/a.js"></script>
<script type="text/javascript" src="./js/b.js"></script>
<script type="text/javascript" src="./js/c.js"></script>
<script type="text/javascript" src="./js/d.js"></script>
<script type="text/javascript" src="./js/e.js"></script>
这些js文件都是按照顺序从上到下依次同步加载的。
这样的写法有很大的缺点。首先,加载的时候,浏览器会停止网页渲染,加载文件越多,网页失去响应的时间就会越长;其次,由于js文件之间存在依赖关系,因此必须严格保证加载顺序(比如上例的a.js要在b.js的前面),依赖性最大的模块一定要放到最后加载,当依赖关系很复杂的时候,代码的编写和维护都会变得困难。
RequireJs很好的解决了两个问题及其优势:
1、实现js文件的异步加载,避免网页失去响应;
2、管理模块之间的依赖性,便于代码的编写和维护。
3、基于AMD模块化机制,让前端代码也能实现模块化。查看《CommonJS和AMD/CMD区别详解》。
开始今天的学习之前,首先需要准备4个文件,分别是【jQuery库】、【require库】、【bootstrap库】、【require加载css插件】,大家可以点击下面的链接进行下载:
1、jquery.js
2、require.js
3、bootstrap.min.js
4、require.css.js
二、如何使用RequireJs?
1、在html页面中引入require库,如下:
<script type="text/javascript" src="./js/require.js"></script>
2、加载require.js以后,下一步就要加载我们自己的代码了。假定我们自己的代码文件是main.js,也放在js目录下面。那么,只需要写成下面这样就行了:
<script src="js/require.js" data-main="./js/main"></script>
data-main属性的作用是,指定网页程序的主模块。在上例中,就是js目录下面的main.js,这个文件会第一个被require.js加载。由于require.js默认的文件后缀名是js,所以可以把main.js简写成main(data-main引入的main.js文件是异步加载的,所以在加载这个文件的同时也会加载其他js文件,其他文件要依赖这个main.js,所以可以将以上代码分开来写)。
<script type="text/javascript" src="./js/require.js"></script>
<script type="text/javascript" src="./js/main.js"></script>
3、主模块main.js的写法:
主模块main.js主要是加载requireJs的配置项,所以需要先了解一下这些配置项的意思:
(1)baseUrl:模块默认加载路径;
(2)paths:自定义模块加载路径;
(3)shim:定义模块之间的依赖关系。
下面具体来看下,这是我的目录结构:
require.config({
'baseUrl' : './app/',
'paths' : {
'jquery' : '../js/jquery',//只写文件名,不用带后缀
},
});
html页面调用:
require(['jquery'], function(a){
console.log(a);//functionn()
});