node.js(二)

1. node的模块化

2. 模块的分类

- 内置模块(核心模块) 由node官方提供。常见的有:fs,path,http等

- 自定义模块  用户创建的每一个js文件都是一个自定义模块。

- 第三方模块  由第三方开发,使用之前需要下载安装。

3.模块作用域

和函数作用域类似,在自定义模块中的变量,函数等成员,只能在当前模块中使用,这种模块级别的访问限制,就叫做模块作用域。

好处:防止全局变量污染。

模块的导入和导出

导出

新建一个a.js文件,里面的代码如下:

```js

//导出一个对象,对象中的值就被暴露出去了。
module.exports = {
    name:"刘德华",
    act(){
        console.log("之前我没得选,现在我想做一个好人")
    },
    age:35
}

导入

新建一个b.js文件,里面的代码如下:

```js

const ldh = require("./a.js")
console.log(ldh.age)
console.log(ldh.name)
ldh.act();
//或者使用解构赋值
const {name} = require("./a.js") //只接受name的值
console.log(name)

【注意】 【module.exports = { name:‘刘德华’}】 【module.exports.name = '刘德华'】的区别

前者是创建的新的对象,将原对象覆盖。后者是在原对象上添加一个新的属性。

require()方法的返回值其实就是引入模块的module.exports对象。

【注意】

1. 导入自定义模块时,文件名的js后缀可以不写

2. require方法加载其他模块时,会执行被加载模块中的代码。

exports导出

由于module.exports写起来比较繁琐,node官方为我们提供了exports关键字,它和module.exports指向同一个对象。

exports.name = "刘德华";
exports.age = 35;
exports.act = function () { console.log("以前我没得选,现在我想做一个好人"); };

两个导出的区别

exportsmodule.exports其实指向的是同一个对象

console.log(module.exports == exports);// true

记住一句话:module.exports指向谁,谁就是被导出的对象。

导出一个对象用 module.exports,导出多个变量和方法用 exports。

 使用场景分析

1.module.exports指向一个新对象, exports添加一个新属性。

module.exports = {
  name:"刘德华",
  age:30
}
exports.myName = "黄渤";
导出的结果为 :{ name:"刘德华", age:30}

2.exports 指向一个新对象,module.exports 添加一个新属性

exports = {
  name:"刘德华",
  age:30
}
module.exports.myName = "黄渤";
```
导出的结果为 :{ myName:"黄渤"}

3.module.exports 添加一个新属性, exports添加一个新属性。

module.exports.myName = "黄渤";
exports.name = "刘德华";
exports.age = 30;

导出的结果为:{ myName: '黄渤', name: '刘德华', age: 30 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值