代码
建立app.js
文件,代码如下:
const express = require('express')
const app = express()
const port = 3002
app.get('/',(req,res)=>{
res.send('hello world!')
})
app.listen(port,()=>{
console.log(`sever is running on http://localhost:${port}`)
})
问题
1️⃣ node.js 的作用
- 让服务器可以运行js语言
- 通过异步操作支持高并发,不擅长大型计算
- 通过npm管理各种库
2️⃣ npm安装依赖库
(1)初始化npm
在vscode
中进入终端,通过npm init -y
在项目文件夹中建立一个package.json
文件
(2)针对项目安装库
在vscode
中进入终端,在项目文件夹目录中,输入 npm install pack_name1 pack_name2 ....
,可以同时一行命令安装多个包。
3️⃣ 运行js文件
(1)反引号
我们在终端且在当前项目文件目录下,输入node app.js
,但是本应在终端输出sever is running on http://3000:
,并没有出现,复制代码去GPT发现是只有反引号才能实现格式化字符串
(2)端口占用
更正反引号后发现还是没有正常输出,但是终端也没有报错,这个时候怀疑是端口占用。于是在命令行中输入netstat
命令,并没有发现有3000端口的占用。
但是还是在代码中把端口3000改成了3002,此时再运行js文件,发现正常输出,于是怀疑是因为3000端口用来给mongodb服务器了,所以在netstat
中不会出现3000端口占用的情况。
结束服务端js文件的执行,只需要ctrl+c即可
4️⃣ (res,req)
res
是请求,req
是回复
对于返回给服务端的消息我们可以知道一下事情
req.body
:客户端提交数据,例如post
和put
请求req.query
:查询字符串参数的数据,例如?key=value
req.ip
:返回客户端的IP地址
对于客户端我们可以得到服务端的信息:
res.send(data)
:服务端相应的数据res.json(data)
:json格式的数据res.status
:响应状态码res.end
:结束响应
在我打印客户端的ip地址的时候,服务器返回
::1
,这个代表本机的地址
总结
express
模块在其中起到了中间件的作用,可以想象一条流水线上有不同的工人,而express
模块就可以演化成不同的工人。