12.22
node.js 19-39
## 模块
```
分类
1.内置模块(node.js提供 像fs,path,http)
2.自定义模块
3.第三方模块
加载模块
使用require()加载其他模块时 会执行被加载模块中的代码
在加载自定义模块可以省略后缀名
模块作用域
1.在自定义模块中定义的变量或者函数 只能在当前模块被访问 防止全局变量污染
2.在每个.js自定义模块中都有一个module对象 存储了与当前模块有关的信息
3.module.exports 将模块成员共享出去 外界用require()导入自定义模块 得到module.exports指向的对象(默认是空对象)
4.永远以module.exports指向的对象为准
const age = 90
module.exports.username = 'hhh'
module.exports.sayhi = () => {
console.log('hello')
}
//指向一个新对象 模块时调用时打印的是这个新对象 而不是上面的 永远以module.exports指向的对象为准
module.exports = {
nickname: '小黑',
sayhi() {
console.log('kkk')
}
}
const a = require('./自定义模块1')
console.log(a)
包
1.第三方模块就是包 基于内置模块封装出来的
2.npm :包管理工具 装包:npm i + 包名称
3.node_modules用来存放所有已安装到项目中的包 package-lock.json记录每一个包下载的信息
4.在项目根目录中 创建package.json配置文件(在项目根目录创建在终端执行 npm init -y 命令) 记录装了那些包
项目名称一定要英文 不要中文和空格
一定要把node_modules文件夹添加到.gitignore忽略文件中
5.下载全部的包执行 npm i 卸载包 npm uninstall+包名称
6.查看所有所用镜像源 nrm ls 切换镜像源 nrm use +名称
7.包的分类
项目包(安装到node_modules中):开发依赖包(只在开发期用到 安装npm i 包名 -D)
核心依赖包
全局包(npm install -g)
```
## 模块的加载机制
```
1.内置模块加载优先级最高
2.自定义模块加载:必须指定./ ../开头路径
再导入自定义模块时,忽略文件扩展名 node.js会按照以下顺序加载:确切文件名 .js .json .node
3.第三方模块加载
```
express
//1.引入
const express = require('express');
const { process_params } = require('express/lib/router');
//2.创建应用对象
const app = express();
//3.创建路由规则
//request 是请求报文的封装 response同理
app.get('/', (request,response) => {
//设置响应
response.send('HELLO EXPRESS');
})
//4.监听端口启动服务
app.listen(8000, () => {
console.log('服务已经启动,8000端口监听中...');
})