1. 关于模块化说法错误的是( C )
A. 解决了依赖关系混乱的问题
B. 解决了全局变量污染的问题
C. 解决了JS文件数量增加后导致传输缓慢的问题
D. 使得功能划分更加精细,工程更加便于维护
2. 常见的模块化规范不包含( C )
A. CommonJS
B. AMD
C. require.js
D. ES6 模块化
3. CommonJS的特点不包含( D )
A. 不污染全局变量
B. 使用exports导出
C. 可以导出任意类型的数据
D. 使用import导入
4. 如果使用CommonJS导入下面的模块,导入的结果类型是( B )
exports.a = 1;
exports.b = "";
module.exports = function a () {};
exports.c = true;
A. number
B. function
C. object
D. udefined
5. ES6中的基本导出和默认导出说法正确的是( A )
A. 基本导出可以有多个,默认导出只能有一个
B. 如果使用*导入整个模块,只包含基本导出
C. 默认导出无法使用基本导出的格式
D. 基本导出和默认导出无法共存
6. CommonJS难以应用到浏览器端,主要的困难是( A )
A. CommonJS的导入是同步,而浏览器获取JS文件是异步的
B. CommonJS缺乏多种导出方式
C. 浏览器难以实现缓存
D. 浏览器无法识别入口文件
7. 从下面的ES6模块中,导入a、b和默认,下面的代码正确的是( C )
export var a = 1;
export var b = 2;
export var c = 3;
export function d () {};
export default {
a: 1,
b: 2,
c: 3,
}
A. import a, b, default from “./module.js”
B. import default, {a, b} from “./module.js”
C. import c, {a, b} from “./module.js”
D. import {a, b, c as default} from “./module.js”
8. 对于 import "./a.js"
,说法正确的是( C )
A. 模块a中一定没有任何导出
B. 在非首次导入时,该语句一定会导致模块a中的代码执行一次
C. 该语句没有从a模块中导入任何内容
D. 该语句语法是错误的
commonJS使用函数_require___对模块进行导入。函数的参数是模块路径,在node环境中,如果要导入本地模块,路径必须以___./____或__../____开头,这一点,和ES6的标准一致。
浏览器为了实现ES6模块化,同时兼容之前的应用程序,因此选择在引入js文件的script元素中添加 type="module____",来代表引入的是一个模块。
在ES6模块内部,使用 exportmodule__数据,来实现默认导出,使用import____变量名 from "模块路径"来导入一个模块。
1. 阐述模块化(非ES6模块化)应用到浏览器端需要解决哪些问题,如何解决?
浏览器端实现模块化需要解决两个问题:
针对第一个问题,可以使用回调或Promise的方式解决
针对第二个问题,可以手动的将模块放入到函数环境中,避免全局变量的污染
2. ES6模块化和CommonJS模块化有哪些区别?