Node的介绍
简单的说 Node.js 就是运行在服务端的 JavaScript。
Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。
Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。
Node模块化
通俗的说,就是在JS文件中,能够使用另一个文件中的变量
1. 模块化的优点
- 更利于维护
- 更好的复用性
- 实现了按需加载文件,减少了不必要的开销
- 可以让项目变得更加简单
- 解决了在一个 JS 文件中引入 另一个 JS 文件的变量 的问题
2.模块化的实现
2.1 自定义模块
结果:1.js文件共享什么,2.js就会获得什么
Node中的模块化如何实现?
1.js文件,通过 module.exports = 导出的内容 导出内容
2.js文件,通过 require(’./a’); 导入内容
▲注意:导入模块时必须带路径,即便两个JS文件在同一个目录,也要加 “./”
2.2 内置模块(内置模块有哪些:详见-http://nodejs.cn/api/)
- 直接使用 require() 加载即可。
- 加载模块时,无需带路径,比如 require(‘fs’)
- 加载内置模块,得到对象类型,对象中内置了很多API方法
2.3 常见的内置文件模块总结
2.3.1 fs
1.readFile('文件路径','utf-8', (err, data) => {})
读取文件里面的内容(异步方法)
结果:
2.fs.writeFile('文件路径', '写入的内容', err => {})
往文件里面添加内容(异步方法)
特点:
- 如果文件不存在,则会创建文件(但不能递归创建)
- 如果文件中有内容,将会被覆盖
结果:
3.access('文件路径', 选填, err => {})
判断文件是否存在(是否可读、是否可写)(异步方法)
参数选择:
fs.constants.F_OK或不填,表示判断文件是否存在;
fs.constants.R_OK表示判断文件是否可读;
fs.constants.W_OK表示文件是否可写
2.3.2 path
1.path.extname('文件路径');
获取路径中的后缀
结果:
2.path.join('路径', '路径', ……);
拼接路径
Node中,有一个全局变量 __dirname ,它表示当前 JS 文件所在的绝对路径
结果:
2.3.3 querystring
1.querystring.parse()
将查询字符串转换成JS对象
结果:
注意:
因为node.js的url.parse方法采用的传统的urlObject,不符合URL现存标准-WHATWG URL API,因此弃用了
2.querystring.stringify()
将JS对象 转成 查询字符串
2.3.4 http
可以搭建web服务器,可以向其他服务器发送http请求
搭建web服务器的步骤
①:加载http模块
const http = require('http');
②:创建 server 对象
const server = http.createServer();
③:注册 request 事件-用于处理客户端的请求;
server.on('request', (req, res) => {
res.statusCode = 200; 可以设置响应状态码
res.setHeader('Content-Type', 'text/plain; charset=utf-8');
res.end('hello wolrd!');
})
④:指定端口,启动服务
server.listen(4000, () => console.log('服务器启动了'))
2.4 第三方模块
第三方模块,都是在node核心模块的基础之上,封装了一下,实现了很多非常方便快速简洁的方法。和使用内置模块一样,需要使用 require
加载模块
2.4.1 本地模块
初始化:
npm init -y
npm init
注意事项:
- package name 默认使用当前文件夹 当做 包的名字
- package name 不能有中文
- package name 不能有特殊符号
- package name 不能和需要安装的第三方模块同名
下载安装第三方模块:
# 正常的下载安装
npm install 模块名
# 简写install为i
npm i 模块名
# 一次性安装多个模块
npm i 模块名 模块名 模块名
卸载第三方模块:
npm uninstall 模块名
npm un 模块名
npm un 模块名 模块名 模块名
2.4.2 全局模块
在任何文件夹都能用
与本地模块的差别:
- 全局安装的模块,不能通过
require()
加载使用。 - 全局安装的模块,一般都是命令或者工具。
安装与卸载语句
安装卸载命令
-
安装命令(多一个
-g
)npm i 模块名 -g # 或 npm i -g 模块名 ### mac 系统如果安装不上,使用下面的命令提高权限 sudo npm i -g 模块名
-
卸载命令(也是多一个
-g
)npm un 模块名 -g
-
全局安装的模块,在系统盘(C盘)
- 通过命令
npm root -g
可以查看全局安装路径
- 通过命令