模块化简介
- 在 Node.js 中每个文件都被当做是一个独立的模块,模块内定义的变量和函数都是独立作用域的,因为 Node.js 在执行模块代码时,将使用如下所示的函数封装器对其进行封装

- 而且项目是由多个模块组成的,每个模块之间都是独立的,而且提高模块代码复用性,按需加载,独立作用域


1 2 3
| module.exports = { 对外属性名: 模块内私有变量 }
|
1 2 3
| const 变量名 = require('模块名或路径')
|
变量名的值接收的就是目标模块导出的对象
代码实现
1 2 3 4 5 6 7 8 9 10 11
|
const baseURL = 'http://hmajax.itheima.net' const getArraySum = arr => arr.reduce((sum, item) => sum += item, 0)
module.exports = { url: baseURL, arraySum: getArraySum }
|
1 2 3 4 5 6 7 8
|
const obj = require('./utils.js') console.log(obj) const result = obj.arraySum([5, 1, 2, 3]) console.log(result)
|
ECMAScript标准-默认导出和导入
CommonJS 规范是 Node.js 环境中默认的,后来官方推出 ECMAScript 标准语法,我们接下来在一个需求中,体验下这个标准中默认导出和导入的语法要如何使用
- 需求:封装并导出基地址和求数组元素和的函数,导入到 index.js 使用查看效果
- 导出语法:
1 2 3
| export default { 对外属性名: 模块内私有变量 }
|
- 导入语法:
1
| import 变量名 from '模块名或路径'
|
变量名的值接收的就是目标模块导出的对象
注意:Node.js 默认只支持 CommonJS 标准语法,如果想要在当前项目环境下使用 ECMAScript 标准语法,请新建 package.json 文件设置 type: ‘module’ 来进行设置
- 代码实现:
1 2 3 4 5 6 7 8 9 10 11
|
const baseURL = 'http://hmajax.itheima.net' const getArraySum = arr => arr.reduce((sum, item) => sum += item, 0)
export default { url: baseURL, arraySum: getArraySum }
|
1 2 3 4 5 6 7 8
|
import obj from './utils.js' console.log(obj) const result = obj.arraySum([10, 20, 30]) console.log(result)
|
ECMAScript标准-命名导出和导入
- ECMAScript 标准的语法有很多,常用的就是默认和命名导出和导入,现在来学习下命名导出和导入的使用
- 需求:封装并导出基地址和数组求和函数,导入到 index.js 使用查看效果
- 命名导出语法:
- 命名导入语法:
1
| import { 同名变量 } from '模块名或路径'
|
代码示例:
1 2 3 4 5
|
export const baseURL = 'http://hmajax.itheima.net' export const getArraySum = arr => arr.reduce((sum, item) => sum += item, 0)
|
1 2 3 4 5 6 7 8 9 10
|
import {baseURL, getArraySum} from './utils.js' console.log(obj) console.log(baseURL) console.log(getArraySum) const result = getArraySum([10, 21, 33]) console.log(result)
|
- 与默认导出如何选择:
- 按需加载,使用命名导出和导入
- 全部加载,使用默认导出和导入