AMD_CMD_RequireJS

题目1: 为什么要使用模块化?

1.解决命名冲突
2.解决依赖管理
3.提高代码可读性
4.代码解耦,提高复用性

2. CMD、AMD、CommonJS 规范分别指什么?有哪些应用

首先,Commonjs是用在服务器端的,同步的,如nodejs
amd, cmd是用在浏览器端的,异步的,如requirejs和seajs
其中,amd先提出,cmd是根据commonjs和amd基础上提出的

AMD规范其实只有一个主要接口 define(id,dependencies,factory),它要在声明模块的时候指定所有的依赖dependencies,并且还要当做形参传到factory中,对于依赖的模块提前执行,依赖前置。

AMD和CMD的区别:AMD的依赖一开始就写好,然后用到直接用,CMD推崇依赖就近,如下面的例子,用到哪个模块,现场require,然后使用模块里的方法。
//AMD define(['./a','./b'], function (a, b) {   //依赖一开始就写好   a.test();   b.test(); }); //CMD define(function (requie, exports, module) {   //依赖可以就近书写   var a = require('./a');   a.test();   ...   //软依赖   if (status) {     var b = requie('./b');     b.test();   } });

COMMONJS:根据CommonJS规范,一个单独的文件就是一个模块。加载模块使用require方法,该方法读取一个文件并执行,最后返回文件内部的exports对象。自己给别人用就export,别人要求用就是require
//foobar.js var test = 123;//私有变量 function foobar () { //公有方法   this.foo = function () {     // do someing ...   }   this.bar = function () {     //do someing ...   } } var foobar = new foobar(); //exports对象上的方法和变量是公有的 exports.foobar = foobar; //require方法默认读取js文件,所以可以省略js后缀 var test = require('./foobar').foobar; test.bar();

题目3: 使用 requirejs 完善入门任务15,包括如下功能:

demo:本地mock成功

AMD_CMD_RequireJS_第1张图片
Paste_Image.png

github:https://github.com/freebreaker/requirejs-demo

你可能感兴趣的:(AMD_CMD_RequireJS)