参考资料: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,

我想在main中调用,下面来看mathjs中代码,必须用return返回一个json,这样main.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'

    }

  }

最新文章

  1. windows CMD下的命令
  2. sql语句返回主键SCOPE_IDENTITY()
  3. [ActionScript 3.0] AS3.0 获取像素点的灰度
  4. yiStack平台维护
  5. Fast Intro To Java Programming (1)
  6. Xcode Product -&gt; Archive disabled
  7. mysql的数据导入导出
  8. NSString / NSMutableString 字符串处理,常用代码 (实例)
  9. Java web 实现 之 Filter分析ip统计网站的访问次数
  10. yoeman构建Asp.net core项目并且实现分层
  11. .Net多线程编程—Parallel LINQ、线程池
  12. 【Android 应用开发】 自定义组件 宽高适配方法, 手势监听器操作组件, 回调接口维护策略, 绘制方法分析 -- 基于 WheelView 组件分析自定义组件
  13. Django框架中的Context使用
  14. Educational Codeforces Round 55 (Rated for Div. 2) B. Vova and Trophies
  15. Node.js简述
  16. kafka集群partition分布原理分析
  17. maven项目配置findbugs插件 使用git钩子控制代码的提交
  18. svn 回退/更新/取消至某个版本命令详解【转】
  19. Sword STL容器分类介绍
  20. Spring Cloud构建微服务架构(四)分布式配置中心(续)

热门文章

  1. 专访Nick McKeown:网络领域的游戏颠覆者
  2. java常用组件
  3. Revolving Digits
  4. Linux下Shell的快捷键(转)
  5. Segmentation fault(core dumped) 调试
  6. Pearson product-moment correlation coefficient in java(java的简单相关系数算法)
  7. hdu5373
  8. python去除停用词(结巴分词下)
  9. Python+Selenium框架unittest执行脚本方法之discover()方法
  10. STL之set具体解释(二)