模块化开发
GuoJun 2020-08-18 Node.js
# 一.什么是模块化开发
传统非模块化开发有如下的缺点:
- 命名冲突
- 文件依赖
模块化规范:
- CommonJS模块化规范
- ES6模块化规范
# 二. CommonJS模块规范
CommonJS使用 exports 和require 来导出、导入模块。
每个文件就是一个模块,有自己的作用域.在一个文件里面定义的变量、函数、类,都是私有的,对其他文件不可见。
- 创建module文件夹
- 导出模块 创建common-module.js
// 定义成员:
const sum = function(a,b){
return parseInt(a) + parseInt(b)
}
const subtract = function(a,b){
return parseInt(a) - parseInt(b)
}
const multiply = function(a,b){
return parseInt(a) * parseInt(b)
}
const divide = function(a,b){
return parseInt(a) / parseInt(b)
}
导出模块中的成员
// 导出成员:
module.exports = {
sum: sum,
subtract: subtract,
multiply: multiply,
divide: divide
}
简写
module.exports = {
sum,
subtract,
multiply,
divide
}
- 导入模块
//引入模块,注意:当前路径必须写 ./
const m = require('./common-module.js')
console.log(m)
const result1 = m.sum(1, 2)
const result2 = m.subtract(1, 2)
console.log(result1, result2)
- 运行程序
node common-module.js
# 三.ES6模块化规范
ES6使用 export 和 import 来导出、导入模块。
创建文件userComponent.js
- 导出模块
export function getList() {
console.log('获取数据列表')
}
export function save() {
console.log('保存数据')
}
//或者方法二写法
export default {
getList() {
console.log('获取数据列表')
},
save() {
console.log('保存数据')
}
}
- 导入模块
//只取需要的方法即可,多个方法用逗号分隔
import { getList, save } from "./userApi.js"
getList()
save()
//或者方法二写法:
import m form './userApi.js'
m.getList()
m.save()
注意:这时的程序无法运行的,因为ES6的模块化无法在Node.js中执行,需要用Babel编辑成ES5后再 执行。
- 运行程序
node userComponent.js