Node.js学习历程【三】之模块化开发

模块化开发

在实际开发中,js模块化有一下几种规范

  • AMD
  • CMD
  • CommonJS
  • ES6

其中Node中使用的是CommonJS

什么是模块化开发

模块化开发可以用乐高积木来比喻。每个积木都有固定的形状和颜色,想要组合积木就必须正确的使用他们之间的连接点进行连接,最后拼出你想要的形状

模块化其实是一种规范,有了规范自然会大大的提升开发效率。每个js文件都是一个模块,每个模块通过固定的方式引入,并且通过固定的方式向外暴露指定的内容

怎样做到模块化开发

在node.js中可以使用exports来将成员导出,用require来引入。

向外暴露文件的方式

方式一: exports

新建a.js文件

let name = 'JOJO'
exports.a = a

新建b.js文件,引入a.js模块

const module_a = require('./a')
console.log(module_a.a)

注意:引入自定义模块时要写上其路径'./a.js',后缀也可以省略。别问为什么,问就是 甲鱼的臀部

也可以在定义成员的时候直接向外暴露

exports.a =10

也可以定义函数暴露

function add(a,b){
	return a+b
}
export.add = add

模块外部调用

const a_module = require('./a')
console.log(a_module.add(1,1))

方式二:module.exports

a.js

module.exports.name = 'JOJO'
module.exports.age = '21'
module.exports.add=(a,b)=>a+b

b.js

const a_module = require('./a')
console.log(a_module.name)
console.log(a_module.age)
console.log(a_module.add(1,1))

让我们使用更为优雅方式

a.js

function add(a,b){
	return a+b
}
function minus(a,b){
	return a-b
}
let a = 10

exports.add = add
exports.minus = minus
exports.a = a

在暴露变量时我们有更简单的方式

module.exports = {
	add,
	minus,
	a
}

b.js
使用解构赋值

let{sum,minus,a} = require('./a')
console.log(sum(1,1))
console.log(minus(2,1))
console.log(a)

两种方式有何不同

1、export是module.export的别名,导出对象最终以module.export为准

let a = 'hello'
let b = 'world'
exports.a = a
module.exports.b = b
const a_module = require('./a')
console.log(m)//{a:'hello',b:'world'}

可以确定,exports与module.exposts确实是一个地址

2、exports只能使用语法来向外暴露内部变量,module.exports既可以通过语法,也可以直接赋值一个对象

使用exports

let a = 'holle'
exports = {
	a
}
const a_module = require('./a')
console.log(a_module)//{}

使用 module.exports

let a = 'holle'
module.exports = {
	a
}
const a_module = require('./a')
console.log(a_module)//{a:'holle'}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值