AMD_CMD_模块化规范

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

1.可以解决命名冲突
2.使代码更易读、易维护
3.解决了文件依赖的问题
4.代码解耦,提高复用性

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

  • CMD:即Common Module Definition通用模块定义,SeaJS推广过程中产生的;
    在 CMD 规范中,一个模块就是一个文件,用define关键字定义一个模块,这是一个函数;
    使用方式是每次想要调用其他模块的时候在写到现在编写的模块中.
define(function(require, exports, module) {
  var a = require('./a')
  a.doSomething()
  var b = require('./b')
  b.doSomething()
})

  • AMD:即Asynchronous Module Definition,中文名是异步模块定义的意思。它采用异步方式加载模块,模块的加载不影响它后面语句的运行。所有依赖这个模块的语句,都定义在一个回调函数中,等到加载完成之后,这个回调函数才会运行。它是一个在浏览器端模块化开发的规范;
    使用AMD规范进行页面开发需要用到对应的库函数,也就是大名鼎鼎RequireJS;
define(id?, dependencies?, factory);

id: 定义中模块的名字,可选;如果没有提供该参数,模块的名字应该默认为模块加载器请求的指定脚本的名字。

依赖dependencies:是一个数组,表示所依赖的模块。

工厂方法factory,是一个回调函数,当前面指定的模块都加载成功后,它将被调用。加载的模块会以参数形式传入该函数,从而在回调函数内部就可以使用这些模块。

  • CommonJS:是服务器端模块的规范,Node.js采用了这个规范。
    在一个模块中,存在一个自由的变量”require”,它是一个函数;
    在一个模块中,会存在一个名为”exports”的自由变量,它是一个对象,模块可以在执行的时候把自身的API加入到其中;
    模块必须使用”exports”对象来做为输出的唯一表示。
// math.js

exports.add = function() {
    var sum = 0, i = 0, args = arguments, l = args.length;
    while (i < l) {
        sum += args[i++];
    }
    return sum;
};
// increment.js

var add = require('math').add;
exports.increment = function(val) {
    return add(val, 1);
};

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

  1. 首屏大图为全屏轮播
  2. 有回到顶部功能
  3. 图片区使用瀑布流布局(图片高度不一),下部有加载更多按钮,点击加载更多会加载更多数据(数据在后端 mock)
    4(可选). 使用 r.js 打包应用

link
github

你可能感兴趣的:(AMD_CMD_模块化规范)