requirejs测试
参考资料:http://www.ruanyifeng.com/blog/2012/11/require_js.html
一、文件目录
二、html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>require-js-test</title>
<meta name="viewport" content="width=device-width,initial-scale=1, minimum-scale=1.0,maximum-scale=1.0,user-scalable=no,minimal-ui"/>
<script data-main="js/main.js" src="js/require.js"></script>
</head>
<body>
</body>
</html>
三、mainjs
require.config({
paths: {
"jquery": "helper/jquery",
}
});
require(["jquery"],function ($) {
alert("jquery已经加载完毕");
})
或者另外一种写法
require.config({
baseUrl:"js/helper",
paths: {
"jquery": "jquery",
}
});
require(["jquery"],function ($) {
alert("jquery已经加载完毕");
})
四、在main中调用jquery,必须让jquery中先定义再返回,经过查找源码知:
define( "jquery", [], function() {
return jQuery;
} );
五、扩展,假设我在helper增加一个自己写的加法math.js,
define(function(){
function sum(a,b) {
return a+b;
};
return{
add:sum,
};
})
下面来看main.js
require.config({
paths: {
"jquery": "helper/jquery",
"math":"helper/math"
}
});
require(["jquery","math"],function ($,math) {
$(".box").css("color","red");
alert(math.add(1,2));
})
六、加载非规范的模块(针对没有用AMD规范写的js,想要在main.js中引用)
理论上,require.js加载的模块,必须是按照AMD规范、用define()函数定义的模块。但是实际上,虽然已经有一部分流行的函数库(比如jQuery)符合AMD规范,更多的库并不符合。那么,require.js是否能够加载非规范的模块呢?
回答是可以的。
这样的模块在用require()加载之前,要先用require.config()方法,定义它们的一些特征。
举例来说,underscore和backbone这两个库,都没有采用AMD规范编写。如果要加载它们的话,必须先定义它们的特征。
require.config({
shim: {
'underscore':{
exports: '_'
},'backbone': {
deps: ['underscore', 'jquery'],
exports: 'Backbone'
}}
});
require.config()接受一个配置对象,这个对象除了有前面说过的paths属性之外,还有一个shim属性,专门用来配置不兼容的模块。具体来说,每个模块要定义(1)exports值(输出的变量名),表明这个模块外部调用时的名称;(2)deps数组,表明该模块的依赖性。
比如,jQuery的插件可以这样定义:
shim: {
'jquery.scroll': {
deps: ['jquery'],
exports: 'jQuery.fn.scroll'
}
}
最新文章
- windows CMD下的命令
- sql语句返回主键SCOPE_IDENTITY()
- [ActionScript 3.0] AS3.0 获取像素点的灰度
- yiStack平台维护
- Fast Intro To Java Programming (1)
- Xcode Product ->; Archive disabled
- mysql的数据导入导出
- NSString / NSMutableString 字符串处理,常用代码 (实例)
- Java web 实现 之 Filter分析ip统计网站的访问次数
- yoeman构建Asp.net core项目并且实现分层
- .Net多线程编程—Parallel LINQ、线程池
- 【Android 应用开发】 自定义组件 宽高适配方法, 手势监听器操作组件, 回调接口维护策略, 绘制方法分析 -- 基于 WheelView 组件分析自定义组件
- Django框架中的Context使用
- Educational Codeforces Round 55 (Rated for Div. 2) B. Vova and Trophies
- Node.js简述
- kafka集群partition分布原理分析
- maven项目配置findbugs插件 使用git钩子控制代码的提交
- svn 回退/更新/取消至某个版本命令详解【转】
- Sword STL容器分类介绍
- Spring Cloud构建微服务架构(四)分布式配置中心(续)