一、Require.js 作用

1.1、是JS 文件加载器,实现js脚本的AMD异步加载。

保证不阻塞页面的渲染和其后的脚本的执行,并提供了在加载完成之后的执行相应回调函数的功能。

1.2、实现JS、CSS文件的规范化,模块化。

使用 define() 定义符合require规范的模块;
使用require.config() 配置模块ID和它对应的js模块所在文件路径;
使用require()指定其所依赖的模块;
使用r.js合并优化。

1.3、可以管理JS模块/文件之间的依赖。

JS模块化,文件化之后,它们之间的依赖可以通过require.js优雅的解决。

1.4、压缩合并多个JS和CSS文件。

require.js中提供的优化器 r.js 可以来优化页面中的js脚本和css文件,达到提高页面响应速度,减少页面所需要的http/https请求次数。

1.5、实现CDN回退

这一隐藏功能,可以支持当CDN加载不正确时,回退加载本地相应的库。

二、Require.js 用法

2.1、在Html页面中添加标签

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

data-main属性的作用是,指定网页程序的主模块。在上面语句中作用,就是加载js目录下面的main.js,这个文件会第一个被require.js加载。

由于require.js默认的文件后缀名是js,所以可以把main.js简写成main。

2.2、main.js示例

baseUrl :基目录;
paths :js文件路径;
shim : 配置依赖关系;
require([主模块])

packages:从CommonJS包(package)中加载模块。参见从包中加载模块。

waitSeconds:在放弃加载一个脚本之前等待的秒数。设为0禁用等待超时。默认为7秒。

context:命名一个加载上下文。这允许require.js在同一页面上加载模块的多个版本,如果每个顶层require调用都指定了一个唯一的上下文字符串。想要正确地使用,请参考多版本支持一节。

deps:指定要加载的一个依赖数组。当将require设置为一个config object在加载require.js之前使用时很有用。一旦require.js被定义,这些依赖就已加载。使用deps就像调用require([]),但它在loader处理配置完毕之后就立即生效。它并不阻塞其他的require()调用,它仅是指定某些模块作为config块的一部分而异步加载的手段而已。

callback:在deps加载完毕后执行的函数。当将require设置为一个config object在加载require.js之前使用时很有用,其作为配置的deps数组加载完毕后为require指定的函数。

enforceDefine:如果设置为true,则当一个脚本不是通过define()定义且不具备可供检查的shim导出字串值时,就会抛出错误。参考在IE中捕获加载错误一节。

xhtml:如果设置为true,则使用document.createElementNS()去创建script元素。

urlArgs:RequireJS获取资源时附加在URL后面的额外的query参数。作为浏览器或服务器未正确配置时的“cache bust”手段很有用。使用cache bust配置的一个示例:

urlArgs: "bust=" +  (new Date()).getTime()

在开发中这很有用,但请记得在部署到生产环境之前移除它。

scriptType:指定RequireJS将script标签插入document时所用的type=""值。默认为“text/javascript”。想要启用Firefox的JavaScript 1.8特性,可使用值“text/javascript;version=1.8”。

/*
* main.js
*/
(function() {
require.config({
baseUrl : './',
paths : {
jquery : 'assets/js/jquery/jquery.min',
bootstrap : 'assets/bootstrap/js/bootstrap.min'
},
shim : {
bootstrap : {
deps : [ 'jquery' ],
exports : 'bootstrap'
}
} }); require(['bootstrap' ], function() {
console.log(all loaded);
}); })(this);
requirejs.config({
baseUrl : "js",
map : {
"*" : {
"css" : "css",
"text" : "text"
}
},
paths : {
"jquery" : "lib/jquery-1.12.4",
"bootstrap" : "lib/bootstrap-3.0.0/js/bootstrap.min",
"bootstrap.datepicker" : "lib/bootstrap.datepicker/js/bootstrap.datepicker",
"bootstrap.datetimepicker" : "lib/bootstrap.datetimepicker/js/bootstrap.datetimepicker.min",
"modernizr" : "lib/modernizr-2.6.2/js/modernizr",
"underscore" : "lib/underscore-1.4.1/js/underscore.min",
"backbone" : "lib/backbone-0.9.2/js/backbone.min",
"app" : "app"
},
shim : {
"bootstrap" : { deps : [ "css!lib/bootstrap-3.0.0/css/bootstrap.min" ] },
"bootstrap.datepicker" : { deps : [ "bootstrap", "css!lib/bootstrap.datepicker/css/bootstrap.datepicker" ] },
"bootstrap.datetimepicker" : { deps : [ "bootstrap.datepicker", "css!lib/bootstrap.datetimepicker/css/bootstrap.datetimepicker.min" ] },
"underscore" : { exports : '_' },
"backbone" : { deps : [ "jquery", "underscore" ], exports : "Backbone" },
"app" : { deps : [ "jquery", "bootstrap", "bootstrap.datepicker", "bootstrap.datetimepicker", "modernizr", "underscore", "backbone", "css!../css/style" ] }
},
urlArgs : "bust=" + (new Date()).getTime()
});

Require.config

Require.js 详细了解的更多相关文章

  1. js模块化开发——require.js的用法详细介绍(含jsonp)

    RequireJS的目标是鼓励代码的模块化,它使用了不同于传统<script>标签脚本加载步骤.可以用它回事.优化代码,但其主要的目的还是为了代码的模块化.它鼓励在使用脚本以moudle ...

  2. require.js入门

    小颖目前所在的公司在用require.js,小颖一只说要写个小demo,今天抽空把自己写的小demo分享出来,希望对初学者有一些帮助,嘻嘻 学习资料: CSDN上的一篇文章:使用RequireJS优化 ...

  3. from Require.js to Webpack(why)

    写在前面: 本文主要参考 From Require.js to Webpack - Part 1 (the reasons),原文作者将项目从 require.js 转移到了 webpack 并详细说 ...

  4. javascript模块化编程库require.js的用法

    随着javascript的兴起,越来越多的公司开始将JS模块化,以增加开发的效率和减少重复编写代码的.更是为了能更加容易的维护日后的代码,因为现在的随着人们对交互效果的越来越强烈的需求,我们的JS代码 ...

  5. 关于require.js的模块化开发

      先是自己打了一些demo,然后回过头来看阮大神的博客,感觉很多莫名其妙的问题,瞬间解决了:很舒服,放上链接,希望对其他人也有帮助:     先是在html的末尾引入了require.js . da ...

  6. require.js 最佳实践【转】

    https://www.cnblogs.com/digdeep/p/4607131.html require.js是一个js库,相关的基础知识,前面转载了两篇博文:Javascript模块化编程(re ...

  7. 使用require.js编写模块化JS

    layout: post title: 使用requirejs编写模块化代码 category: javascript date: 2016-10-22 00:00:00 tags: javascri ...

  8. require.js 最佳实践

    require.js是一个js库,相关的基础知识,前面转载了两篇博文:Javascript模块化编程(require.js), Javascript模块化工具require.js教程,RequireJ ...

  9. require.js+backbone 使用r.js 在本地与生产环境 一键压缩的实现方式

    require.js+backbone 使用r.js 在本地与生产环境 一键压缩的实现方式 时间:2017-07-03 17:18:11      阅读:210      评论:0      收藏:0 ...

随机推荐

  1. table选项卡

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...

  2. JAVA8新特性--集合遍历之forEach

    java中的集合有两种形式Collection<E>,Map<K,V> Collection类型集合 在JAVA7中遍历有一下几种方式:List<String> l ...

  3. 数据结构学习-BST二叉查找树 : 插入、删除、中序遍历、前序遍历、后序遍历、广度遍历、绘图

    二叉查找树(Binary Search Tree) 是一种树形的存储数据的结构 如图所示,它具有的特点是: 1.具有一个根节点 2.每个节点可能有0.1.2个分支 3.对于某个节点,他的左分支小于自身 ...

  4. Android面试收集录6 事件分发机制

    转自:秋招面试宝典. 一. 基础认知 1.1 事件分发的对象是谁? 答:事件 当用户触摸屏幕时(View或ViewGroup派生的控件),将产生点击事件(Touch事件). Touch事件相关细节(发 ...

  5. 20145202马超 《Java程序设计》第三周学习总结

    ************************http://git.oschina.net/tuolemi/java这是git的那个网址********************* 函数的重载:在同一 ...

  6. 9 Django 模型层(2) --多表操作

    创建模型 实例:我们来假定下面这些概念,字段和关系 作者模型:一个作者有姓名和年龄. 作者详细模型:把作者的详情放到详情表,包含生日,手机号,家庭住址等信息.作者详情模型和作者模型之间是一对一的关系( ...

  7. 14,vue+uwsgi+nginx部署路飞学城

    有一天,老男孩的苑日天给我发来了两个神秘代码,听说是和mjj的结晶 超哥将这两个代码,放到了一个网站上,大家可以自行下载 路飞学城django代码 https://files.cnblogs.com/ ...

  8. 4.bootstrap的form表单的form-group和form-control的区别与联系

    1. form-group一般用于div form-control一般用于置于div中的标签元素,为了让控件在各种表单风格中样式不出错,需要添加类名“form-control”,如: <form ...

  9. KVO的底层实现原理?如何取消系统默认的KVO并手动触发?

    KVO是基于runtime机制实现的 当某个类的属性对象第一次被观察时,系统就会在运行期动态地创建该类的一个派生类(该类的子类),在这个派生类中重写基类中任何被观察属性的setter 方法.派生类在被 ...

  10. 剑指Offer - 九度1507 - 不用加减乘除做加法

    剑指Offer - 九度1507 - 不用加减乘除做加法2013-11-29 20:00 题目描述: 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. 输入: 输入可能包 ...