一、什么是模块化?
(1)定义:CommonJS 模块是为 Node.js 打包 javascript 代码的原始方式。 Nodejs 还支持浏览器和其他 JavaScript 运行时使用的 ECMAScript 模块标准。在 Node.js 中,每个文件都被视为一个单独的模块。
(2)概念:项目是由很多个模块文件组成的
(3)好处:提高代码复用性,按需加载,独立作用域
(4)使用:需要标准语法导出和导入进行使用
二、CommonJS标准
- 使用:
(1)导出:module.exports={ }
(2)导入:require('模块名或路径')
2.模块名或路径:
(1)内置模块:直接写名字(例如:fs,path,http)
(2)自定义模块:写模块文件路径(例如:./utils.js)
utils.js代码
const { get } = require("http")
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)
**三、**ECMAScript标准
1. 默认导入与导出
(1)导出:export default { }
(2)导入:import 变量名 from '模块名或路径'
**注意:**Node.js 默认支持 CommonJs 标准语法
如需使用 ECMAScript 标准语法,在运行模块所在文件夹新建 package.json 文件,并设置 {"type":"module"}
utils.js代码
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 './utilss.js'
console.log(obj)
const result = obj.arraySum([1, 2, 3])
console.log(result)
2.命名导入与导出
(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(baseUrl)
console.log(getArraySum([1, 2, 3]))
如何选择:
按需加载,使用命名导出和导入
全部加载,使用默认导出和导入
总结:
1.Node.js 支持哪 2 种模块化标准?
>CommonJS 标准语法(默认)
>ECMAScript 标准语法
2.ECMAScript 标准,命名导出和导入的语法?
>导出:export 修饰定义的语句
>导入:import {同名变量} from '模块名或路径'
3.ECMAScript 标准,默认导出和导入的语法?
>导出:export default { }
>导入:import 变量名 from '模块名或路径'