题目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成功
Paste_Image.png
网友评论