1.模块化开发怎么做?
理解模块化开发模式:浏览器端requirejs,seajs;服务器端nodejs;ES6模块化;fis、webpack等前端整体模块化解决方案;grunt、gulp等前端工作流的使用
2.AMD(Modules/Asynchronous-Definition)、CMD(Common Module Definition)规范区别?
理解这两种规范的差异,主要通过requirejs与seajs的对比,理解模块的定义与引用方式
的差异以及这两种规范的设计原则
参考链接1:https://www.zhihu.com/question/20351507/answer/14859415
参考链接2:https://github.com/seajs/seajs/issues/277
1、对于依赖的模块,AMD 是提前执行,CMD 是延迟执行。
不过 RequireJS 从 2.0 开始,也改成可以延迟执行(根据写法不同,处理方式不同)。
CMD 推崇 as lazy as possible.
2、CMD 推崇依赖就近,AMD 推崇依赖前置。
\3. AMD 的 API 默认是一个当多个用,CMD 的 API 严格区分,推崇职责单一。
比如 AMD 里,require 分全局 require 和局部 require,都叫 require。
CMD 里,没有全局 require,而是根据模块系统的完备性,
提供 seajs.use 来实现模块系统的加载启动。CMD 里,每个 API 都简单纯粹。
3.requireJS的核心原理是什么?
(如何动态加载的?如何避免多次加载的?如何 缓存的?)
核心是js的加载模块,通过正则匹配模块以及模块的依赖关系,
保证文件加载的先后顺序,根据文件的路径对加载过的文件做了缓存
模块化怎么做?
1、 使用字面量实现命名空间(YUI):
Itcast.common.dom={};
Itcast.common.css={};
Itcast.common.event={};
2、使用闭包
立即执行函数,不暴露私有成员
var module1 = (function(){
var _count = 0;
var m1 = function(){
//...
};
var m2 = function(){
//...
};
return {
m1 : m1,
m2 : m2
};
})();