requirejs实例
来源:互联网 发布:手机淘宝怎么删晒图 编辑:程序博客网 时间:2024/06/08 00:17
html引入文件
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body></body>
<script src="js/requirejs.js" data-main="config.js" defer async >
// data-main="config.js" config.js后的.js可以去掉。因为requireJS源码默认都是以后缀JS文件结尾的。
// async属性表明文件需要异步加载,IE不支持这个属性,只支持defer
</script>
</html>
config.js配置文件
requirejs.config({ // 如果未显示设置baseUrl,则默认值是加载require.js的html所处的位置,如果使用了data-main属性的话,则该路径变成了baseUrl.
baseUrl:'app/', // 该属性通常由requireJS加载的data-main属性基准目录决定
path:{ // paths是映射那些不直接放在baseUrl指定的目录下的文件
app:'app', // 设置paths的起始位置是相对于baseUrl的,除非该path设置是以”/”开头或含有URL协议(http://或者https://
// hello:'hello',
},
shim:{ // shim这个参数可以解决没有使用define(function(){})定义的代码模块或者一些全局变量注入,确保此文件先加载,然后再加载其他文件。
// 解决了使用非AMD方式定义的模块(如jquery插件)及其载入顺序,为那些没有使用define()来声明依赖关系,设置模块的”浏览器全局变量注入”型脚本做依赖和导出配置。
//hello:{exports:'hi'} // 1、exports 某个依赖中的某个全局变量暴露给requirejs,当作这个模块本身的引用。
hello:{ // 2、init同时暴露多个全局变量
init:function(){
return {
hi:hi,
hi2:hi2
}
}
}
},
map:{ // 3、 map参数是用来解决同一个模块不同版本的问题
'app/a':{
'jquery': 'js/lib/jquery1.7.js'
},
'app/b':{
'jquery': 'js/lib/jquery1.9.1.js'
}
},
config:{ // 4、 config是指需要将配置信息传给一个模块,这些配置往往是application级别的信息,需要一个手段将他们向下传递给模块。
'app/c': { // 要获取这些信息的模块可以加载特殊的依赖 ”moudle” ,并调用module.config().
size: 'large'
},
'app/d': {
color: 'blue'
}
}
});
// 1、 exports 可以把某个非requirejs方式的代码中的某一个全局变量暴露出去,当作该模块以引用。
//requirejs(['hello'], function(){
// hi();
//});
// 2、同时暴露多个全局变量 exports 与 init 同时存在的时候, exports 将被忽略。
//requirejs(['hello'], function(hello){
// hello.hi();
// hello.hi2();
//});
// 把下面代码独立出一个js文件
requirejs(['app'], function(app) {
app.hello();
});
//// 3、 map 方法调用
requirejs(['app/a'],function(jq){ });
requirejs(['app/b'],function(jq){ });
// 4、 在requireJS中,基于requirejs.config()的config配置项来实现。通过config配置项来给app/c.js传递一个模块信息
// 如上面的一个对象{size:large},而在c.js里面直接可以通过module.config()方法来获取size的值。
require(['app/c'],function(c){
console.log(c);
});
/// 有主的模块 define('jquery', [], function() { ... });
/// 它多了第一个参数'jquery',表示给当前这个模块起了名字jquery,它已经是有主的了,只能属于jquery .
/// 为什么有的有主,有的无主?
/// 因为像 jquery , underscore 这样的基础库,经常被其它的库依赖。如果声明为无主的,那么其它的库很可能起不同的模块名,这样当我们使用它们时,就可能会多次载入jquery/underscore。
js文件
define([],function(){
return {
hello: function(){
alert('hello, app');
}
}
});
/// define定义一个作用域避免全局空间污染,它可以显示出其依赖关系,并以函数(定义此模块的那个函数)参数的形式将这些依赖进行注入。例如:
///require/app/b.js文件夹下添加基本的requireJS代码如下:
// b.js
define(function(){ /// 函数式的定义
var add = function(x,y) {
return x + y;
};
return {
add : add
}
});
define(function () { ///键值对式的定义 直接返回一个对象(可以解决全局变量的理念)
return {
color: "black",
size: "unisize"
}
});
//require/config.js文件夹下
// config.js
require(['app/b'], function(b){
console.log(b.add(1,1));
});
// 浏览器加载顺序 requirejs --> config.js --> b.js。
- RequireJS实例
- requirejs实例
- RequireJS实例分析
- requirejs+angular+restangular小实例
- RequireJS 依赖关系的实例
- requireJS多页面应用实例
- RequireJS
- RequireJS
- RequireJS
- requireJs
- requireJS
- requirejs
- requireJS
- requireJS
- RequireJS
- requirejs
- RequireJS
- RequireJS
- 编程故事接龙
- MariaDB upgrade from version 5.5.x to 10.0.x
- 用springAOP计算每一层方法执行的时间
- Win10 UWP Popup
- postgresql相关常见问题
- requirejs实例
- 【学习笔记06】java面向对象-main方法、单例设计模式
- GitHub上star超过2k的安卓项目和代码风格指南(绝对干货)
- C语言中利用栈检测括号是否匹配
- 欢迎使用CSDN-markdown编辑器
- Netty服务端和客户端搭建(入门)
- java并发库之Executors常用的创建ExecutorService的几个方法说明
- 文档
- 错误集锦之一:This Activity already has an action bar supplied by the window decor.