长久以来都渴望应用javascript的模块化编程。今日紧迫更甚,岁月蹉跎,已经不能再等了。

拜读阮一峰的有关文章已经好几遍,文章写得真好,简洁流畅,头头是道,自觉有点明白了。但经验告诉我们,一定要亲手试一试。

一试之下,果然走了一些弯路,加深了理解。

一、下载require.js

http://requirejs.org/docs/download.html

二、编写相应测试代码。计有:

页面:/index.html

主体结构定义JS:/main.js

符合AMD规范的模块化JS:

/js/amd/module-A.js
/js/amd/module-B.js

传统意义上的,不符合AMD规范、非模块化的JS

/js/noamd/file-C.js

代码如下:

//module-A.js
//define方法,应该是在require.js定义的。这也是AMD规范的内容之一
define(function (){
var add = function (x,y){
return x + y;
};
return {
add: add
};
});
//module-B.js
//依赖于moduleA
define(['moduleA'], function(ma){
function compute(x,y){
return ma.add(x,y);
}
return {
compute : compute
};
});
//这是一个传统意义上,非AMD规范的JS;但是,还是要符合一定的规范:需要返回一个对象,以便在main.js里进行exports,然后外部才能进行使用(使用这个对象里面的方法)。
var objectC = (function(){
function multiply(x,y){
return x * y;
}
return {
multiply:multiply
}
})();

至关重要的main.js

//main.js
//重点在于如何映射非规范模块
require.config({
baseUrl: "js",
shim: {
'moduleC': {
deps: [],
exports: 'objectC'//这个名字,跟file-C.js里的"var objectC=..." 对应
}
},
paths: {
"moduleA": "amd/module-A",
"moduleB": "amd/module-B",
"moduleC": "noamd/file-C"//非规范化文件这一步也是要的,并非单单在shim里定义了就行
}
});

瞪灯瞪等!且看如何应用:

index.html

<!DOCTYPE html>

<html>
<head>
<script src="require.js"></script>
<script src="main.js"></script>
</head>
<body>
<script type="text/javascript">
require(['moduleB','moduleC'], function (moduleB,moduleC){
alert(moduleB.compute(3,4));//7
alert(moduleC.multiply(3,4));//12
   });
</script>
</body>
</html>

参考文章:

Javascript模块化编程(三):require.js的用法

基于gulp requirejs rjs的前端自动化构建系列文章(二)

应用require.js进行javascript模块化编程小试一例的更多相关文章

  1. 利用require.js实现javascript模块化加载

    这种引入很看到很想死吧! <script src="1.js"></script> <script src="2.js">& ...

  2. Javascript模块化编程(三):require.js的用法

    Javascript模块化编程(三):require.js的用法 原文地址:http://www.ruanyifeng.com/blog/2012/11/require_js.html 作者: 阮一峰 ...

  3. Javascript模块化编程之路——(require.js)

    转自:http://www.ruanyifeng.com/blog/2012/10/javascript_module.html Javascript模块化编程(一):模块的写法 随着网站逐渐变成&q ...

  4. 坑人的 Javascript 模块化编程 require.js

    坑人的 Javascript 模块化编程 require.js

  5. Javascript模块化编程require.js的用法

    JS模块化工具requirejs教程(一):初识requirejs http://www.runoob.com/w3cnote/requirejs-tutorial-1.html JS模块化工具req ...

  6. (转)Javascript模块化编程(三):Require.js的用法

    转自 ruanyifeng 系列目录: Javascript模块化编程(一):模块的写法 Javascript模块化编程(二):AMD规范 Javascript模块化编程(三):Require.js的 ...

  7. Javascript模块化编程-require.js

    转自:https://www.cnblogs.com/digdeep/p/4607131.html Javascript模块化编程(一):模块的写法 随着网站逐渐变成"互联网应用程序&quo ...

  8. 坑人的 Javascript 模块化编程 sea.js

    坑人的 Javascript 模块化编程 sea.js 忧伤 加 蛋疼的 开始了 看文档 Sea.js 进行配置 seajs.config({ // 设置路径,方便跨目录调用 paths: { 'ar ...

  9. Javascript模块化编程(二):AMD规范

    Javascript模块化编程(二):AMD规范   作者: 阮一峰 原文地址:http://www.ruanyifeng.com/blog/2012/10/asynchronous_module_d ...

随机推荐

  1. Ubuntu Software Center has closed unexpectly解决方案

    打开软件中心Ubuntu Software Center的时候 出现crash report :The application Ubuntu Software Center has closed un ...

  2. lamp环境配置,ubunutu下

    Ubuntu下快速搭建LAMP环境过程记录: 安装 Apache2: sudo apt-get install apache2 安装PHP模块: sudo apt-get install php5 安 ...

  3. 【drp 12】再识转发和重定向:SpringMVC无法跳转页面

    最近再使用SpringMVC进行页面跳转的时候,不知道发生了什么,始终都无法正确跳转.后来问题解决了,发现是对于转发和重定向没有能很好的理解,以此写篇博客,权当做积累了! 声明:本博客的所有代码,均为 ...

  4. 九度oj 题目1214:丑数

    题目描述: 把只包含因子2.3和5的数称作丑数(Ugly Number).例如6.8都是丑数,但14不是,因为它包含因子7. 习惯上我们把1当做是第一个丑数.求按从小到大的顺序的第N个丑数. 输入: ...

  5. 解开Future的神秘面纱之任务执行

    此文承接之前的博文 解开Future的神秘面纱之取消任务 补充一些任务执行的一些细节,并从全局介绍程序的运行情况. 任务提交到执行的流程 前文我们已经了解到一些Future的实现细节,这里我们来梳理一 ...

  6. BZOJ 3168 [Heoi2013]钙铁锌硒维生素 ——矩阵乘法 矩阵求逆

    考虑向量ai能否换成向量bj 首先ai都是线性无关的,然后可以a线性表出bj c1*a1+c2*a2+...=bj 然后移项,得 c1/ci*a1+...-1/ci*bj+...=ai 所以当ci不为 ...

  7. 【容斥】HDU 4135 Co-prime

    acm.hdu.edu.cn/showproblem.php?pid=4135 [题意] 询问[a,b]中与n互质的数有多少个 [思路] 考虑[1,m]中与n互质的数有多少个,答案就是query(b) ...

  8. dedecms--自定义session存值取值

    最近在用用dedecms开发项目,开发项目中遇到需要通过session存储信息在其他页面调取使用,但是对dedecms里面自带的session存储使用不好,我需要存储的是用户登录的时候信息,于是我就使 ...

  9. CSS3 伪类选择器 nth-child() 的用法

    伪类选择器 nth-child() 在IE6-8和FF3.0-浏览器不支持,CSS3中nth-of-type(n)(比如nth-of-type(1))这个特殊的类选择符可以样式更加个性的标题和段落等, ...

  10. 使用nginx时,让web取得原始请求地址

    问题描述 当使用nginx配置proxy_pass参数以后,后端web取得的Request.Uri是proxy_pass中配置的地址,而不是client访问的原始地址 举例说明: 假设nginx配置文 ...