[javascript模块化]require.js简单使用
##1.javascript模块规范
- ###CommonJS - 主要用于服务器端编程,比如node.js的模块系统,就是参照CommonJS规范实现的。在CommonJS中,有一个全局性方法require(),用于加载模块。 - 引用一段代码: - // package/lib is a dependency we require
 var lib = require( "package/lib" ); // behavior for our module
 function foo(){
 lib.log( "hello world!" );
 } // export (expose) foo to other modules as foobar
 exports.foobar = foo;
 - 注释也很清楚,但是这里面有个很大的问题,不适用于浏览器环境。当需要用到log方法时候必须等待依赖模块lib加载完毕,整个应用将会停滞,因此浏览器环境不能使用commonjs规范,只能采用异步加载,即下面将要引出的AMD规范。 
- ###AMD - AMD是"Asynchronous Module Definition"的缩写,意思就是"异步模块定义"。它采用异步方式加载模块,模块的加载不影响它后面语句的运行。所有依赖这个模块的语句,都定义在一个回调函数中,等到加载完成之后,这个回调函数才会运行。 - 上面的代码可以修改为如下: - define(["package/lib"], function (lib) { // behavior for our module
 function foo() {
 lib.log( "hello world!" );
 } // export (expose) foo to other modules as foobar
 return {
 foobar: foo
 }
 });
 - 然后我们需要调用这个模块方法的时候可以这样: - require(["package/myModule"], function(myModule) {
 myModule.foobar();
 });
 - 利用一个毁掉函数,这样加载不是同步的,浏览器就不会假死,显然AMD规范更适合浏览器环境。现在最流行的AMD规范的javascript库就是require.js,下面我们来介绍。 
##2.require.js使用
- ###为什么要使用 - (1)实现js文件的异步加载,避免网页失去响应; 
(2)管理模块之间的依赖性,便于代码的编写和维护。
- ###引入require.js - <script src="js/require.js"></script>
 <script src="js/require.js" data-main="js/main"></script>
 
 - 这里的data-main是指定主模块,即js目录下的main.js,这里简写省去后缀。 
- ###main.js写法 - // main.js
 requirejs(['moduleA', 'moduleB', 'moduleC'], function (moduleA, moduleB,moduleC){
 // some code here
 });
 
 - require()函数接受两个参数。第一个参数是一个数组,表示所依赖的模块,上例就是['moduleA', 'moduleB', 'moduleC'],即主模块依赖这三个模块;第二个参数是一个回调函数,当前面指定的模块都加载成功后,它将被调用。加载的模块会以参数形式传入该函数,从而在回调函数内部就可以使用这些模块。 
 require()异步加载moduleA,moduleB和moduleC,浏览器不会失去响应;它指定的回调函数,只有前面的模块都加载成功后,才会运行,解决了依赖性的问题。
- ###requirejs.config() - requirejs.config({
 //设置别名
 paths: {
 jquery : "jquery-1.11.3.min"
 }
 });
 - require.js要求,每个模块是一个单独的js文件。这样的话,如果加载多个模块,就会发出多次HTTP请求,会影响网页的加载速度。因此,require.js提供了一个优化工具,当模块部署完毕以后,可以用这个工具将多个模块合并在一个文件中,减少HTTP请求数。 
- ###define方法 - 正如前面AMD规范中引用的例子,模块必须采用define函数来定义。假设main.js中定义了一个log模块,log.js应该这样写: - define(["lib"], function (lib) { // behavior for our module
 function foo() {
 lib.log( "hello world!" );
 } // export (expose) foo to other modules as foobar
 return {
 foobar: foo
 }
 });
 
然后在main.js中引用:
	require(["log"], function(log) {
	    log.foobar();
	});
[javascript模块化]require.js简单使用的更多相关文章
- JavaScript模块化-require.js
		http://www.cnblogs.com/duanhuajian/archive/2013/01/04/2844151.html 原文:http://www.ruanyifeng.com/blog ... 
- 模块化  require.js 入门教学(前端必看系列)
		在工作的时候总是会用到模块化开发,那接下来我就顺着这个问题来说一下什么是模块化 前端模块化 !!! JS 模块化提供给我们三种规范 分别就是 No.1 commonjs 这个其实也就代表了node. ... 
- require.js简单入门
		推荐文章:http://www.ruanyifeng.com/blog/2012/11/require_js.html 1.以下例子主要实现功能, 1)引用jq库获取dom中元素文本, 2)实现并引用 ... 
- Javascript模块化工具require.js教程
		转自:http://www.w3cschool.cc/w3cnote/requirejs-tutorial-1.html, http://www.w3cschool.cc/w3cnote/requir ... 
- require.js实现js模块化编程(一)
		1.认识require.js: 官方文档:http://requirejs.org/RequireJS是一个非常小巧的JavaScript模块载入框架,是AMD规范最好的实现者之一.最新版本的Requ ... 
- require.js模块化
		require.js简单来说就是把js代码分装模块化了 模块化 模块就是实现特定功能的一组方法.只要把不同的函数(以及记录状态的变量)简单地放在一起,就算是一个模块. 我拿一个运动框架来解释一下req ... 
- JS模块化工具require.js教程(一):初识require.js
		随着网站功能逐渐丰富,网页中的js也变得越来越复杂和臃肿,原有通过script标签来导入一个个的js文件这种方式已经不能满足现在互联网开发模式,我们需要团队协作.模块复用.单元测试等等一系列复杂的需求 ... 
- require.js的使用
		RequireJS是一个非常小巧的JavaScript模块载入框架,是AMD规范最好的实现者之一.最新版本的RequireJS压缩后只有14K,堪称非常轻量.它还同时可以和其他的框架协同工作,使用Re ... 
- 如何使用require.js?
		最近几天在学习一个javascript库require.js,也看了一些相关的教学视频,这里推荐一下幕课网阿当老师的<阿当大话西游之Web组件>的教学视频,一整套看下来,参照视频里面的de ... 
随机推荐
- activemq---点对点/发布订阅模式简单代码示例
			activemq 消息模式流程: ConnnectionFactory --> Connection --> Session --> Message ---ConnectionFac ... 
- 设置intellij IDEA编辑框背景色
			首先是打开idea开发工具,然后点击左上角的File,选择Settings设置 应用即时生效,无需重启idea 
- python基础:1.位、字节、字的关系
			1.位,简称b,或bit,比特,数据存储的最小单位.每个二进制数字0或1就是一个位(bit),网络通信常用bps,bit per second ,每秒传输多少位 2.字节,简称byte, 1byte ... 
- matlab中求解线性方程组的rref函数
			摘自:http://www.maybe520.net/blog/987/ matlab中怎么求解线性方程组呢? matlab中求解线性方程组可应用克拉默法则(Cramer's Rule)即通过det( ... 
- Linux中的touch命令总结(一)
			touch命令有两个主要功能: 改变 timestamps 新建_空白_文件 例如,不带任何参数地输入: touch file1 file2 file3 将在当前目录下新建三个空白文件:file1, ... 
- MAX3232 每次只有在上电后,再连接串口线正常——保护电阻。RS232防雷保护
			转载:http://m.newsmth.net/article/Circuit/298517?p=1 转载:http://www.360doc.com/content/18/0719/13/57938 ... 
- JS中数据结构之栈
			1.栈的基本介绍 栈是一种高效的数据结构,因为数据只能在栈顶添加或删除,所以这样的操作很快,而且容易实现. 栈是一种特殊的列表,栈内的元素只能通过列表的一端访问,这一端称为栈顶.栈被称为一种后入先出( ... 
- 线性规划(Simplex单纯形)与对偶问题
			线性规划 首先一般所有的线性规划问题我们都可以转换成如下标准型: 但是我们可以发现上面都是不等式,而我们计算中更希望是等式,所以我们引入这个新的概念:松弛型: 很显然我们最后要求是所有的约束左边的变量 ... 
- vue开发微信公众号--开发准备
			由于工作项目的原因,需要使用vue开发微信公众号,但是这种微信公众号更多是将APP套了一个微信的壳子,除了前面的授权和微信有关系以外,其他的都和微信没多大的关系了,特此记录 开发流程 首先需要在电脑上 ... 
- C#操作Access的查询、添加、删除、修改源程序
			C#操作Access的查询.添加.删除.修改源程序 using System; using System.Collections.Generic; using System.ComponentMode ... 
