在线客服
扫描二维码
下载博学谷APP
扫描二维码
关注博学谷微信公众号
随着Web2.0时代的到来,使用模块化规范进行管理成为许多人开始考虑的想法。本文为大家整理总结了前端模块化的相关面试题,大家可以借此机会把模块化的相关知识点梳理一遍。了解异步模块加载机制、使用模块化的原模块化的优缺点等等内容。希望本文可以让大家彻底掌握前端模块化的相关面试题!

1、对 AMD,CMD,CommonJs 有什么理解?
AMD 规范即异步模块加载机制。从规范描述页面看,AMD 很短也很简单,但却完整描述了模块的定义,依赖关系,引用关系以及加载机制。 AMD 规范其实只有一个主要接口 define(id,dependencies,factory),它要在声明模块的时候指定所有的依赖dependencies,并且还要当做形参传到factory中,对于依赖的模块提前执行,依赖前置
define("module", ["dep1", "dep2"], function(d1, d2) { return someExportedValue;
});
require(["module", "../file"], function(module, file) { /* ... */ });
优点:适合在浏览器环境异步加载;并行加载多个模块。
缺点:提高开发成本,代码阅读和书写比较困难;不符合通用的模块思维方式,是一种妥协的实现。
实现:requireJS,NodeJs,Dojo,JQuery
CMD 规范和 AMD 相似,尽量保持简单,并且与 CommonJS 和 NodeJS 的
Modules 规范保持了很大的兼容性。在 CMD 中,一个模块就是一个文件, 格式为:define( factory )
define("module", ["dep1", "dep2"], function(d1, d2) {
return someExportedValue;
});
require(["module", "../file"], function(module, file) { /* ... */
});
优点:依赖就近,延迟执行;很容易在 node 中运行。
缺点:依赖 SPM 打包,模块的加载逻辑偏重。
实现:SeaJS
CommonJS 是在浏览器环境之外构建 JavaScript 生态系统为目标产生的项目,比如服务器和桌面环境中。CommonJS 规范是为了解决 JavaScript 的作用域问题而定义的模块形式,可以使每个模块在它自身的命名空间中执行。该规范的主要内容是:模块必须通过 module.exports 导出对外的变量或接口,通过 require()来导入其他模块的输出到当前模块。
//moduleA.js
module.exports =
function( value ){
return
value
*
2;
}
// moduleB.js
var multiplyBy2 = require('./moduleA');
var result = multiplyBy2(4);
CommonJS 是同步加载模块,一个单独的文件就是一个模块。但其实也有浏览器端的实现,其原理是将所有模块都定义好并通过 id 进行索引,
这样就可以浏览器进行解析了 服务器端的 Node.js 遵循 CommonJS 规范。核心思想是允许模块通过 require 方法来同步加载所要依赖的其他模块,然后通过 exports 或 module.exports 来导出需要暴露的接口。
require("module");
require("../file.js");
exports.doStuff = function() {};
module.exports = someValue;
优点:服务器端便于重用;NPM 中已经将近 20w 个模块包;简单并容易使用。
缺点:同步的模块方式不适合在浏览器环境中,同步意味着阻塞加载, 浏览器资源是异步加载的;不能非阻塞的并行加载多个模块。
区别:(AMD or CMD)
2、为什么要模块化?不用的时候和用RequireJS的时候代码该如何书写?
(1)方便大量的 js 脚本代码的管理维护以及团队配合开发;
(2)有效解决命名空间冲突及文件依赖加载顺序问题;
(3)有利于模块的版本管理,提高可维护性,有利于前端性能优化,跨环境共享模块。
3、分别说说同步和异步模块化的应用场景,说一下AMD 异步模块化实现的原理?
引入 JS 时会遇到需要异步加载文件,此时 require.async 便可满足异步加载需求。
以上就是前端模块化相关面试题整理,大家都弄清楚了吗?关于前端模块化的复习梳理就到这里了,希望本文对大家能够有所帮助。
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
Web前端求职必备 常见前端面试题汇总(二)
一般情况下web前端面试的时候并不会设计特别复杂的问题。但是依旧有很多同学在比较基础的问题上栽了跟头。所以小编结合多套面试题,为大家整理出8个虽然简单面试题,即将面试或者正在面试的小伙伴速度参考一下,别让小问题组织了你高薪的步伐。
7604
2019-06-28 18:29:15
前端HTML面试题汇总附参考答案
前端的核心技术就是有结构、表现和行为三部分构成的,模式是HTML、CSS和JavaScript。HTML又叫超文本标记语言,HTML语言可以制作网页。对于前端面试者来说,HTML是几乎一项必考的知识点。因此小编汇总了前端的HTML面试题,希望能帮助求职者牢牢掌握这方面的知识点。
6668
2019-09-23 22:04:57
Redis从入门到精通详解
众所周知,Redis是一款开源的数据库,它使用ANSI C语言编写、遵守BSD协议、支持网络,并且可基于内存也可持久化的日志型、Key-Value高性能。本文就来聊聊Redis,带大家从入门到精通。以下是Redis史上最全详解,一起来看看吧!
6630
2019-11-16 15:12:08
前端面试中常见的浏览器相关问题
疫情好转后。迎来一波复工热潮。在这个时候,也是许多小伙伴求职面试的高峰期。因此小编为大家整理了前端面试中常见的浏览器相关问题,众所周知,浏览器的相关问题是前端面试中的基础问题,也是几乎必考的问题。希望大家可以在前端面试前,多刷刷题,准备得更加充分。
6410
2020-03-23 17:47:15
菜鸟学习前端的方法分享
许多想要投身于前端行业的初学者常常会困扰:如何学习前端?从哪里开始入手学习?前端要学哪些内容?为了一次性解决大家对于入门前端的问题,本文将分享给大家一些菜鸟学习前端的方法,包括前端学习的误区、学习的内容等等。如果你想快速入门前端,就赶紧接着看下去吧!
5019
2020-07-22 18:27:41
热门文章
- 前端是什么
- 前端开发的工作职责
- 前端开发需要会什么?先掌握这三大核心关键技术
- 前端开发的工作方向有哪些?
- 简历加分-4步写出HR想要的简历
- 程序员如何突击面试?两大招带你拿下面试官
- 程序员面试技巧
- 架构师的厉害之处竟然是这……
- 架构师书籍推荐
- 懂了这些,才能成为架构师 查看更多
扫描二维码,了解更多信息
