如何获取requireJS?
通过github来获取,去github上搜索 RequireJS 进行clone或 zip包下载使用
定义模块
difine来进行定义

引用模块

require来进行加载
加载文件:
RequireJS以一个相对于baseUrl的地址来加载所有的代码。
//定义一个helper模块
define('helper',['jquery'],function($){
return {
trim: function(str){
return $.trim(str);
}
}
});
app.js
//加载helper
require(['helper'],function(helper){
var str=helper.trim(' amd ');
console.log(str);
});
引用:
<script data-main="/js/app/" src="/js/require.js"></script>
配置baseUrl
在app.js上,添加
requirejs.config({
baseUrl:'/js'
});
如果添加上了这句话引入从
<script data-main="/js/app/" src="/js/require.js"></script>
改成
<script src="/js/require.js"></script>
<script src="/js/app.js"></script>RequireJS加载机制

实现一个简单的demo
1、demo目录

index.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>我是默认页面</title> <link rel="stylesheet" type="text/css" href="css/basic.css"> </head> <body> <div> 我是一个居中话的模块 <h1>requireJS和自动打包</h1> </div> <script src="js/require.js"></script> <script src="js/app.js"></script> </body> </html>
require.js
app.js
//自动加载js下面需要的模块 BaseUrl
requirejs.config({
baseUrl:'js'
});
require(['helper'],function(helper){
var str=helper.trim(' amd ');
console.log(str);
});helper.js
define('helper',[],function(){
return {
trim: function(str){
return 'helper:'+str;
}
}
});
/*
模块名 依赖模块 方法实现
define('helper',['jquery'],function(){
return {
trim: function(str){
return 'helper:'+str;
}
}
});*/basic.css
.text-center{
text-align:center;
}界面运行效果:

可以看到,helper: amd 了

相应配置:paths 与 baseUrl结合
我们把目录调整成:
css
js
./lib
./jquery.js
./require.js
helper.js
app.js
baseUrl:需要加载模块的地址
paths:配置与模块名不相关的模块
//自动加载js下面需要的模块 BaseUrl
requirejs.config({
baseUrl:'js',
paths:{
'jquery':'./lib/jquery'
}
});
requirejs.config({
baseUrl:'js',
paths:{
'jquery':[
,//首先路径'https://cdn.bootcss.com/jquery/3.3.1/jquery.js',//如果加载不成功,则加载下面lib/jquery
'./lib/jquery'
]
}
});
require(['helper'],function(helper){
var str=helper.trim(' amd ');
console.log(str);
});paths 后面的引用,可以是 一个字符串路径,也可以是一个数组。
如果是数组,则默认引用第一个,第一个作为首选项,如果加载失败,则使用第二个。
注意事项:paths 后面所有的js 都不需要.js 这个后缀,否则引入不到
定义模块的方式
1、函数式定义
define('helper',['jquery'],function($){
return {
trim: function(str){
return $.trim(str);
}
}
});第一个函数,最佳实践:不写死模块名
define(['jquery'],function($){
return {
trim: function(str){
return $.trim(str);
}
}
});第二个参数:依赖的模块,可有可无
define(function($){
return {
trim: function(str){
alert(str);
}
}
});2、定义简单的对象
define({
username:'james',
name:'james song',
email:'574482856@qq.com',
gender:'boy'
});下面我们通过一个案例说明一下:
通过点击一个按钮,获取相关信息并打印



绑定#user的click 事件,打印出user中的信息。
针对不支持AMD插件的库应该怎么引入




map设置,通过不同的require加载不同模块时,加载不同的文件


引用:

可以改成['./app/api2'] 通过map加载jquery的版本。
map中可以使用* ,只要有需要jquery的话,都是加载jquery。
加载js等待的时间:
waitSecond=7
urlArgs配置

用来干什么呢?控制版本号缓存
看看效果:

传统jsonp与require中的jsonp:
