详解node和ES6的模块导出与导入
什么是模块
模块是JS代码的组织单元。一个模块中包含了一些独立的、可重用的代码。模块化提供了更好的代码重用,更好的代码管理,并且可以提供更好的性能。
在早期,JS程序的模块化靠的是IIFE(立即执行函数表达式)模式。但是这种模式需要手动处理模块依赖关系并且容易出错。
现代 JS 应用的模块化通常采用 ES6 的模块功能,它为应用程序提供了一种面向对象的抽象概念。 从长远来看,ES6 模块将成为JS 开发应用程序的标准,并且会逐步代替 CommonJS 和AMD之类的传统模块。
node 中的导入和导出
在 Node 中,可以通过模块导入和导出的方式,对代码进行模块化管理。
模块导出
在 Node 中,可以通过 exports 或 module.exports 将模块内部的东西导出,这些被导出的内容可以被其它模块所访问。下面我们以一个计算圆面积的模块 circle.js
来说明模块导出。
circle.js
exports.area = function (r) {
return Math.PI * r * r;
};
exports.circumference = function (r) {
return 2 * Math.PI * r;
};
在 circle.js
模块中,我们通过 exports
对象将两个函数 area
和 circumference
导出。
模块导入
在其它模块中,可以通过 require 函数来导入需要的模块。
main.js
const circle = require('./circle.js');
console.log(`半径为 4 的圆的面积是 ${circle.area(4)}`);
console.log(`半径为 4 的圆的周长是 ${circle.circumference(4)}`);
在 main.js
中,我们使用 require
函数来导入 circle.js
模块。因为 circle.js
中没有对外导出默认的东西,所以我们需要用对象或者变量来接收模块导出的东西。 变量circle
就是 circle.js
中导出的exports
对象。
ES6 中的模块导入与导出
ES6 标准还引入了 modules 的规范。该规范定义了模块如何导入和导出。ES6 中的模块,默认使用严格模式,并且使用 import 导入,使用 export 导出。下面我们就来介绍 ES6 中的模块导入和导出。
模块导出
使用 export
关键字将模块内部的东西导出。下面我们以一个计算矩形面积的模块 rectangle.js
来说明模块导出。
rectangle.js
const PI = 3.14;
export function area (width, height) {
return width * height;
}
export function circumference(width, height) {
return 2 *(width + height);
}
export function circleArea(radius) {
return PI * radius * radius;
}
在 rectangle.js
模块中,我们使用 export
关键字将三个函数 area
、circumference
和circleArea
导出。
模块导入
在其它模块中,可以通过 import
关键字来导入需要的模块。下面我们以 main.js
来导入刚刚定义的 rectangle.js
模块。
main.js
import { area, circumference, circleArea } from './rectangle.js';
console.log(`矩形的面积 = ${area(5,5)}`);
console.log(`矩形的周长 = ${circumference(5,5)}`);
console.log(`半径为4的圆的面积 = ${circleArea(4)}`);
在 main.js
中,我们使用 import
关键字来导入 rectangle.js
模块,因为在 rectangle.js
中使用的是 export function
关键字导出的模块接口,所以我们需要用花括号 {}
来包含需要导入的模块接口。导入的模块接口的名称必须与导出的模块接口的名称一致。相信你对模块导入和导出已经有了一个初步的了解。
总结
本文主要介绍了 Node 和 ES6 中的模块导入和导出。我们首先介绍了 Node 中的模块导入和导出,通过示例讲述了如何在 Node 中使用 exports
和 require
来导入和导出模块。 接着我们介绍了 ES6 中的模块导入和导出,通过示例讲述了如何在 ES6 中使用 import
和export
关键字来导入和导出模块。希望本文可以帮助你了解模块化的重要性,更好的应用模块化来管理你的代码,提高代码的重用性和运行效率。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解node和ES6的模块导出与导入 - Python技术站