长久以来都渴望应用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. 2011 Michigan Invitational Programming Contest

    Crossings Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100463 Description ...

  2. Terracotta服务器的不同配置方式

    Terracotta服务器的不同配置方式 博客分类: 企业应用面临的问题 Java&Socket 开源组件的应用 Terracotta双机多机镜像服务器阵列分片模式企业应用 Terracott ...

  3. Xcode的代码块和代码块注释

    我们看到的这些

  4. NBOJv2——Problem 1002: 蛤玮的财宝(多线程DP)

    Problem 1002: 蛤玮的财宝 Time Limits:  1000 MS   Memory Limits:  65536 KB 64-bit interger IO format:  %ll ...

  5. [UOJ#129][BZOJ4197][Noi2015]寿司晚宴

    [UOJ#129][BZOJ4197][Noi2015]寿司晚宴 试题描述 为了庆祝 NOI 的成功开幕,主办方为大家准备了一场寿司晚宴.小 G 和小 W 作为参加 NOI 的选手,也被邀请参加了寿司 ...

  6. POJ 2914 Minimum Cut 全局最小割

    裸的全局最小割了吧 有重边,用邻接矩阵的时候要小心 #include<iostream> #include<cstdio> #include<bitset> #in ...

  7. 算法复习——floyd求最小环(poj1734)

    题目: 题目描述 N 个景区,任意两个景区之间有一条或多条双向的路来连接,现在 Mr.Zeng 想找一条旅游路线,这个路线从A点出发并且最后回到 A 点,假设经过的路线为 V1,V2,....VK,V ...

  8. [HDU-5536] Chip Factory (01字典树)

    Problem Description John is a manager of a CPU chip factory, the factory produces lots of chips ever ...

  9. Java远程调用BPS流程实现流程运行简单示例

    1.简介:略 2.背景:略 3.目的:自我学习笔记 4.实现过程 (1).画出流程图 如下: 路由活动分支下的条件语句为复杂表达式: ((account<200&&divisio ...

  10. msp430项目编程46

    msp430综合项目---监控系统46 1.电路工作原理 2.代码(显示部分) 3.代码(功能实现) 4.项目总结