Node 学习笔记 day26 2021-5-13
3.2 系统模块fs 文件操作
f:file文件,s:system系统,文件操作系统
读取文件内容
4.2 获取第三方模块
npm:node的第三方模块管理工具
- 下载:npm install 模块名称
4.3 第三方模块 nodemon
nodemon是一个命令行工具,用以辅助项目开发
在Node.js中,每次修改文件都要在命令行工具中重新执行该文件,非常繁琐
使用步骤
1.使用npm install nodemon -g 下载他
4.4 第三方模块 nrm
nrm:npm下载地址切换工具
4.5 第三方模块gulp
基于node平台开发的前端构建工具
将机械化操作编写成任务,想要执行机械化操作室执行一个命令行命令任务就自动执行了
6.2 package.json文件的作用
项目描述文件,记录了当前项目信息,例如项目名称、版本、作者、github地址、当前项目依赖了哪些第三方模块等。使用npm init -y命令生成
6.3 项目依赖
- 在项目的开发阶段和线上运营阶段,都需要依赖的第三方包,称为项目依赖
- 使用npm install 包名命令下载的文件会默认被添加到package.json文件的dependencies字段中
6.4 开发依赖
- 在项目的开发阶段需要依赖,线上运营阶段不需要依赖的第三方包,称为开发依赖
- 使用npm install 包名 --save-dev命令将包添加到package.json文件的devDependencies字段中
6.5 package-lock.json的作用
- 锁定包的版本,确保再次下载时不会因为包版本不同而产生问题
- 加快下载速度,因为该文件中已经记录了项目所依赖第三方包的数组昂结构和包的下载地址,重新安装时只需下载即可,不需要做额外的工作
5.1 模块查找规则-当模块拥有路径但没有后缀时
1.require方法根据模块路径查找模块,如果是完整路径,直接引入模块
2.如果模块后缀省略,先找同名js文件再找同名js文件夹
3.如果找到了同名文件夹,找文件夹中的index.js
4.如果文件夹中没有index.js就会去当前文件夹中的package.js文件中查找main选项的如果文件
5.如果找指定的入口文件不存在或者没有指定入口文件就会报错,模块没有被找到
5.2 模块查找规则-当模块没有路径且没有后缀时
1.Node.js会假设它是系统模块
2.Node.js回去node_modules文件夹中
3.首先看是否有该名字的JS文件
4.再看是否有该名字的文件夹
5.如果是文件夹看里面是否有index.js
6.如果没有index.js查看该文件夹中的package.json中的main选项确定模块入口文件
7.否则找不到报错
1.6 URL
统一资源定位符,又叫URL,是专为标识Internet网上资源位置而设的一种编址方式,我们平时所说的网页地址指的即是URL
URL的组成
传输协议://服务器IP或域名:端口/资源所有位置标识
http:超文本传输协议,提供了一种发布和接收HTML页面的方法
2.创建web服务器
创建web服务器
//用于创建网站服务器的模块
const http = require('http')
//app对象就是网站服务器对象
const app = http.createServer()
//当客户端有请求来的时候
app.on('request',(req,res)=>{
res.end('<h2>hello user</h2>')
})
//监听端口
app.listen(3000)
console.log('网站服务器启动成功')
3.http协议
3.1 HTTP协议的概念
http规定了如何从网站服务器传输超文本到本地浏览器,它基于客户端服务器架构工作,是客户端(用户)和服务器端(网站)请求和应答的标准
3.2 报文
在HTTP请求和响应的过程中传递的数据块就叫报文,包括要传送的数据和一些附加信息,并且要遵守规定好的格式
3.3请求报文
1.请求方式(Request Method)
- GET 请求数据
- POST 发送数据
2.请求地址(Request URL)
app.on('request',(req,res)=>{
req.headers //获取请求报文
req.url //获取请求地址
req.method //获取请求方法
})
3.4响应报文
1.HTTP状态码
- 200请求成功
- 404请求的资源没有被找到
- 500服务器端错误
- 400客户端请求有语法错误
2.内容类型
- text/html
- text/css
- application/javascript
- image/jpeg
- application/json
4.1请求参数
客户端向服务器端发送请求时,有时需要携带一些客户信息,客户信息需要通过请求参数的形式传递到服务器端,比如登录操作
4.2 GET请求参数
- 参数被放置在浏览器地址栏中,例如:http://localhost:3000/?name=zhangsan&age=20
4.3 POST请求参数
- 参数被放置在请求体中进行传输
- 获取POST参数需要使用data事件和end事件
- 使用querystring系统模块将参数转换为对象格式
4.4 路由
http://localhost:3000/index
http://localhost:3000/login
路由是指客户端请求地址与服务器端程序代码的对应关系。简单来说,就是请求什么响应什么
4.5 静态资源
//1.引入系统模块http
const http = require('http')
const app = http.createServer()
const url = require('url')
app.on('request', (req, res) => {
//获取请求方式
const method = req.method.toLowerCase()
//获取请求地址
const pathname = url.parse(req.url).pathname
res.writeHead(200, {
'content-type': 'text/html;charset=utf-8'
})
if (method == 'get') {
if (pathname == '/' || pathname == '/index') {
res.end('欢迎来到首页')
} else if (pathname == '/list') {
res.end('欢迎来到列表页')
} else {
res.end('您访问的页面不存在')
}
} else if (method == 'post') {
}
})
app.listen(3000)
console.log('服务器启动成功')
//2.创建网站服务器
//3.为网站服务器对象添加请求事件
//4.实现路由功能
//1)获取客户端的请求方式
//2)获取客户端的请求地址
4.5 静态资源
服务器端不需要处理,可以直接响应给客户端的资源就是静态资源,例如CSS、JavaScript、images文件。
4.6 动态资源
相同的请求地址不同的响应资源,这种资源就是动态资源
http://www.itcast.cn/article?id=1
http://www.itcast.cn/article?id=2
5.1 同步API,异步API
同步API:只有当前API执行完成后,才能继续执行下一个API
异步API:当前API的执行不会阻塞后续代码的执行
5.2 同步API,异步API的区别(获取返回值)
同步API可以从返回值中拿到API执行的结果,但是异步API是不可以的
5.3 回调函数
自己定义函数让别人去调用
5.5同步API,异步API的区别(代码执行顺序)