初始化环境
npm init
1、nodemon
安装:cnpm i nodemon --save-dev
修改配置:
2、lodash(工具库)
安装:cnpm i lodash --save
--save和 --save-dev的区别:
1.--save安装的插件在package.json文件的dependencies对象中
2.--save-dev安装的插件在package.json文件的devDependencies对象中
devDependencies是开发环境使用,dependencies是生产环境使用。
common.js模块化
语法:◆module.exports【输出】
◆require(..)【输入】
◆主要用于nodejs开发
在一个文件里只导出一个内容,直接在最后使用export default xxx;
使用时,在要使用的文件中的script标签里引入,使用import xxx from ‘路径’
2、在一个文件里导出多个内容,比如导出多个函数,直接在定义的函数前面加上export即可;
使用时在要使用的文件中的script标签里,使用import { a,b } from ‘路径’,例如a,b就是导出的内容名 字,比 如图中内容就是import { sum, test } from "./utils";
3、监听
const http = require("http");
const server = http.createServer(()=>{
console.log("监听到了")
})
server.listen(3000);
console.log("请访问3000端口")
4、返回json数据
const http = require("http");
const querystring = require("querystring")
const server = http.createServer((req, res) => {
// 获取url
const url = req.url
// 获取path
const path = url.split("?")[0];
// 获取请求的方式
const method = req.method;
// 获取参数
// const queryStr = url.split("?")[1];
// const query = querystring.parse(queryStr)
// get请求
if (path == "/api/list" && method == "GET") {
const result = {
error: 0,
data: [{
user: "张三",
content: "留言1"
},
{
user: "李四",
content: "留言2"
},
]
}
res.writeHead(200, {
"content-type": "application/json"
})
res.end(JSON.stringify(result))
}
// post请求
if (path === "/api/create" && method === "POST") {
const result = {
error: 0,
msg: "创建成功"
}
res.writeHead(200, {
"content-type": "application/json"
});
res.end(JSON.stringify(result))
}
// 没有匹配到路由,返回404
res.writeHead(404,{"content-type":"text/plain"})
res.end("404 Not Fonund")
})
// 监听端口
server.listen(3000)
4、返回html格式
// 没有匹配到路由,返回404
res.writeHead(404, {
"content-type": "text/html"
})
res.end(`
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>404 Not Found</h1>
</body>
</html>
`)
5、流( stream )的表现
1、观看视频时,一边加载一边观看
2、上传文件时,有进度条
3、网速较慢时,打开网页会先显示一部分,然后继续加载
接收前端传递的数据
if (path === "/api/create" && method === "POST") {
// 判断是否是json格式
const reqType = req.headers["content-type"];
// 用来接收前端传来的数据
let bodyStr = "";
// 接收数据
req.on("data",chunk=>{
// 数据累加
bodyStr = bodyStr+chunk
})
// 接收数据完成
req.on("end",()=>{
// 如果是json格式
if(reqType==="application/json"){
// 把内容转换为json格式
const body = JSON.parse(bodyStr)
console.log("body is",body)
}
res.end("接收完成")
})
// 这里要添加return,否则会匹配到404
return
6、require的三个层级
模块化的意义:拆分便于管理,便于多人协作开发,成熟的语言都支持模块化