-
模块化出现前
污染全局命名空间
依赖管理, 必须从上到下一次加载 -
后续方案
OBJECTS
立即调用的函数表达式 -
export 例子
export function sum(x, y) { return x + y; } export function difference(x, y) { return x - y; } import { sum, difference } from "./functions.js";
-
HTML中使用
<script type="module" src="functions.js"></script> <script type="module" src="script.js"></script>
-
模块化有点
模块不会向全局(window)作用域添加任何内容。
模块始终处于严格模式。
在同一文件中引用同一模块多次将无效,因为模块只会被执行一次。
模块需要运行在服务器环境。 -
多种引入方式
export function sum() {} export function difference() {}
方式一:
import { sum, difference } from "./functions.js";
方式二:
import { sum as add, difference as subtract } from "./functions.js"; add(1, 2); // 3
方式三:
import * as mathFunctions from "./functions.js"; mathFunctions.sum(1, 2); // 3 mathFunctions.difference(10, 3); // 7
-
默认导出
模块也可以使用关键字 default 包含默认导出。默认导出不是使用大括号导入,而是直接导入到命名标识符中export default function sum(x, y) { return x + y; } import sum from "./functions.js"; sum(1, 2); // 3
按命名导出和默认导出可以同时使用
export const length = 10; export const width = 5; export default function perimeter(x, y) { return 2 * (x + y); }
我们可以使用以下代码导入这些变量和默认函数:
import calculatePerimeter, { length, width } from "./functions.js"; calculatePerimeter(length, width); // 30
JS import and export
于 2022-04-04 23:39:58 首次发布
本文探讨了模块化编程的兴起,如何解决全局命名空间污染问题,以及OBJECTS和立即调用的函数表达式的应用。通过实例展示export和import的使用,强调了模块化的优势,如避免污染、严格模式和模块加载效率。还介绍了多种导入方式,包括默认导出和按名导入,并总结了模块化的重要性和适用场景。
摘要由CSDN通过智能技术生成