Node.js模块化

101 阅读2分钟

一、什么是模块化

定义:在Node.js中,每个文件都被视作一个单独的模块

概念:项目是由很多个模块文件组成的

好处:提高代码复用性,按需加载,独立作用域

使用:需要标准语法导出和导入进行使用

二、CommonJs标准

需求:定义 utils.js 模块,封装基地址和求数组总和的函数 使用:

  1. 导出:module.exports = {}
  2. 导入:require('模块名或路径')
  3. 模块名或路径: 内置模块:直接写名字(例如:fs,path,http) 自定义模块:写模块文件路径(例如:./utils.js)

代码:utils.js部分

 * 目标:基于 CommonJS 标准语法,封装属性和方法并导出
 */
const baseURL = 'http://hmajax.itheima.net'
const getArraySum = arr => arr.reduce((sum, item) => sum += item, 0)

// 导出
module.exports = {
  url: baseURL,
  arraySum: getArraySum
}

index.js部分

// 导入
const obj = require('./utils.js')
console.log(obj)
const result = obj.arraySum([5, 1, 2, 3])
console.log(result)

运行结果:

01.js.png 三、ECMAScript 标准 - 默认导出和导入

需求:封装并导出基地址和求数组元素和的函数

默认标准使用:

  1. 导出:export default {}
  2. 导入:import 变量名 from '模块名或路径' 注意:Node.js 默认支持 CommonJS 标准语法 如需使用 ECMAScript 标准语法,在运行模块所在文件夹新建 package.json 文件,并设置 { "type" : "module" }

代码:utils.js部分

 * 目标:基于 ECMAScript 标准语法,封装属性和方法并"默认"导出
 */
const baseURL = 'http://hmajax.itheima.net'
const getArraySum = arr => arr.reduce((sum, item) => sum += item, 0)

// 默认导出
export default {
  url: baseURL,
  arraySum: getArraySum
}

index.js部分

import obj from './utils.js'
console.log(obj)
const result = obj.arraySum([10, 20, 30])
console.log(result)

package.json部分

{
  "type": "module"
}

四、ECMAScript 标准 - 命名导出和导入

需求:封装并导出基地址和求数组元素和的函数

命名标准使用:

  1. 导出:export 修饰定义语句
  2. 导入:import { 同名变量 } from '模块名或路径‘ 如何选择: 按需加载,使用命名导出和导入 全部加载,使用默认导出和导入

代码:utils.js部分

export const baseURL = 'http://hmajax.itheima.net'
export const getArraySum = arr => arr.reduce((sum, item) => sum += item, 0)

index.js部分

import {baseURL, getArraySum} from './utils.js'
console.log(obj)
console.log(baseURL)
console.log(getArraySum)
const result = getArraySum([10, 21, 33])
console.log(result)

package.json

{
  "type": "module"
}