题目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,包括如下功能:
- 首屏大图为全屏轮播
- 有回到顶部功能
- 图片区使用瀑布流布局(图片高度不一),下部有加载更多按钮,点击加载更多会加载更多数据(数据在后端 mock)
4(可选). 使用 r.js 打包应用