requireJS使用教程 2.0

常用方法

requirejs.config : 为模块指定别名

requirejs : 将写好的模块进行引入,根据模块编写主代码

define : 编写模块

html

<script src="../js/require.js" data-main='../js/main.js'></script>

main.js

require.config({
paths: {
jquery: 'jquery-2.1.4'
}
}); requirejs(['jquery', 'validate'], function($, validate){
validate.test();
})

validate.js

define(['jquery'], function($){

  return {
test: function(){
$('body').css('backgroundColor', 'red');
}
} });

以上就是简单用法

实际情况

1、datetimepicker 不支持 requirejs,需要用到shim参数

 require.config({
shim: {
'bootstrap': ['jquery'],
'datepicker': ['bootstrap'],
},
paths: {
jquery: 'jquery-2.1.4',
bootstrap: 'bootstrap',
datepicker: 'bootstrap-datetimepicker'
}
}); requirejs(['jquery', 'bootstrap', 'datepicker', 'modules/datepicker'], function($, a, b, datepicker){
datepicker.datepicker('date');
})

module

define(['jquery'],  function($){

  return {
datepicker: function(id){
$('.'+id).datetimepicker({
format: 'YYYY.MM.DD'
});
}
} });

侧栏工具条开发

加载js

RequireJS以一个相对于baseUrl的地址来加载所有的代码,而baseUrl一般设置到与该属性相一致的目录。也可以通过config函数设置。

有时候你想避开"baseUrl + paths"的解析过程,而是直接指定加载某一个目录下的脚本。此时可以这样做:如果一个module ID符合下述规则之一,其ID解析会避开常规的"baseUrl + paths"配置,而是直接将其加载为一个相对于当前HTML文档的脚本:

以 ".js" 结束.

以 "/" 开始.

包含 URL 协议, 如 "http:" or "https:".

项目库/三方库

www/ index.html js/ app/ sub.js lib/ jquery.js canvas.js app.js

有些库并没有使用define()来定义它们的依赖关系,你必须为此使用shim config来指明它们的依赖关系。 如果你没有指明依赖关系,加载可能报错。这是因为基于速度的原因,RequireJS会异步地以无序的形式加载这些库。

data-main

你在main.js中所设置的脚本是异步加载的。所以如果你在页面中配置了其它JS加载,则不能保证它们所依赖的JS已经加载成功。

定义模块

define({
color: 'black',
size: 4
}); define(function(){
alert('set up');
return {
color: 'black',
size: 4
}
}); 存在依赖的函数式定义:http://www.requirejs.cn/ 1.3.3 将模块定义为函数。返回函数

特殊情况处理:

1、浏览器全局变量注入型的库,使用shim。比如 jquery.ui 依赖qjuery

2、CommonJS模块格式,需要通过简单包装来实现。

接下来练习一个commonJS的例子

实际中碰到的问题

1、模块A引入模块B

方法一:在main文件中,通过函数的参数引入

方法二:在模块A中引入,如果某个方法用不到模块B,则debugger时,看不到模块B,真正实现按需加载。

requireJS 用法的更多相关文章

  1. requirejs教程(一):基本用法

    介绍 RequireJS是一个非常小巧的JavaScript模块载入框架,是AMD规范最好的实现者之一.最新版本的RequireJS压缩后只有14K,堪称非常轻量.它还同时可以和其他的框架协同工作,使 ...

  2. RequireJS学习资料汇总

    入门系列 [1]阮一峰 RequireJS用法 [2]RequireJS入门指南 文档系列 [1]RequireJS中文文档 [2]RequireJS英文文档 代码实践 知识扩展 [1]计算机干了什么

  3. RequireJS学习资料

    RequireJS学习资料汇总   入门系列 [1]阮一峰 RequireJS用法 [2]RequireJS入门指南 文档系列 [1]RequireJS中文文档 [2]RequireJS英文文档 代码 ...

  4. requirejs学习(一)

    requirejs学习(一) 随着网站功能逐渐丰富,网页中的js也变得越来越复杂和臃肿,各种依赖(插件等)也逐渐增多,原有通过script标签来导入一个个的js文件这种方式已经不能满足现在的需求,我们 ...

  5. requirejs的用法

    requirejs的用法 2014年11月6日 17164次浏览 之前我的一片文章介绍过requirejs,具体地址是:http://www.haorooms.com/post/RequireJS_m ...

  6. RequireJS shim 用法说明

    RequireJS中如果使用AMD规范,在使用的过程中没有太多的问题,如果加载非AMD规范的JS文件,就需要使用Require中的shim. require.config({ paths:{ jque ...

  7. 模块化 Sea.js(CMD)规范 RequireJS(AMD)规范 的用法

    插入第三方库AMD CMD都 一样  如:JQ(再JQ源码里修改) 使用seajs的步骤 1.HTML里引入seajs <script src="./lib/sea.js"& ...

  8. (转)RequireJS shim 用法说明

    RequireJS中如果使用AMD规范,在使用的过程中没有太多的问题,如果加载非AMD规范的JS文件,就需要使用Require中的shim. require.config({ paths:{ jque ...

  9. requirejs的用法(二)

    这个系列的第一部分和第二部分,介绍了Javascript模块原型和理论概念,今天介绍如何将它们用于实战. 我采用的是一个非常流行的库require.js. 一.为什么要用require.js? 最早的 ...

随机推荐

  1. '<', hexadecimal value 0x3C, is an invalid 问题解决

    你的web.config 里面一定有个节点的不完整,如 错误如下: 正确的如下:

  2. C#中截取字符串的几种方法

      1.根据单个分隔字符用split截取 例如 复制代码代码如下: string st="GT123_1"; string[] sArray=st.split("_&qu ...

  3. 数据结构中很常见的各种树(BST二叉搜索树、AVL平衡二叉树、RBT红黑树、B-树、B+树、B*树)

    数据结构中常见的树(BST二叉搜索树.AVL平衡二叉树.RBT红黑树.B-树.B+树.B*树) 二叉排序树.平衡树.红黑树 红黑树----第四篇:一步一图一代码,一定要让你真正彻底明白红黑树 --- ...

  4. CGContextRef 绘图

    如何绘制一个矩形 添加一个属性 @property(nonatomic,strong) NSString* RectNumber; 1. 首先重写UIview的drawRect方法 - (void)d ...

  5. python基础07 函数

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 函数最重要的目的是方便我们重复使用相同的一段程序. 将一些操作隶属于一个函数,以后 ...

  6. Android 环境常见问题

    1.启动adb时报: adb server is out of data.kill... ADB server didn't ACK    *failed to start daemon*    er ...

  7. MVC 下拉單數據內容綁定

    #region        /// <summary>授權範圍自建列表</summary>        /// <returns></returns> ...

  8. Corba、protocol buffer、SOA的区别 (转)

    From: http://www.zhihu.com/question/20279489 Google的protocol buffers?这个跟corba.soa没啥关系,不同层次的概念,没法比.pr ...

  9. 《深入理解Nginx》阅读与实践(四):简单的HTTP过滤模块

    一.Nginx的HTTP过滤模块特征 一个请求可以被任意个HTTP模块处理: 在普通HTTP模块处理请求完毕并调用ngx_http_send_header()发送HTTP头部或调用ngx_http_o ...

  10. 详解log4j2(下) - Async/MongoDB/Flume Appender 按日志级别区分文件输出

    1. 按日志级别区分文件输出 有些人习惯按日志信息级别输出到不同名称的文件中,如info.log,error.log,warn.log等,在log4j2中可通过配置Filters来实现. 假定需求是把 ...