文章目录
⭐️学习视频教程来自 B站
✨笔记源码——点击下载
认识NodeJS
javascript可以运行在浏览器上,因为google浏览器内置V8引擎
NodeJS是基于V8引擎的一个容器,又是C++编写的 所以JS代码也可以运行在NodeJS中
认识HTTP请求
- DNS解析,建立TCP连接,然后发起HTTP请求
- 服务端接收到HTTP请求,进行处理,返回数据
- 客户端接收到返回的数据,处理数据(例如渲染页面)
谷歌json格式美化插件:蓝奏云 密码:63mj
处理get请求
const http = require("http");
const url = require("url");
const server = http.createServer((req, res) => {
const method = req.method;
console.log("method", method);
let reqUrl = req.url;
let query = url.parse(reqUrl, true).query;
res.end(JSON.stringify(query));
});
server.listen(5000, () => {
console.log("server running at prot 5000");
});
处理post请求
const http = require("http");
const server = http.createServer((req, res) => {
if (req.method === "POST") {
let postData = "";
// 流stream
req.on("data", (chunk) => {
postData += chunk.toString();
});
req.on("end", () => {
console.log("postData", postData);
res.end("数据接收完毕");
});
console.log("post data content type", req.headers["content-type"]);
}
});
server.listen(5000, () => {
console.log("server running at prot 5000");
});
处理http请求总结
const http = require("http");
const url = require("url");
const server = http.createServer((req, res) => {
const method = req.method;
const reqUrl = req.url;
const path = reqUrl.split("?")[0];
const query = url.parse(reqUrl, true).query;
const responseData = {
method,
reqUrl,
path,
query,
};
res.setHeader("Content-Type", "application/json");
if (method === "GET") {
res.end(JSON.stringify(responseData));
}
if (method === "POST") {
let postData = "";
req.on("data", (chunk) => {
postData += chunk.toString();
});
req.on("end", () => {
responseData.postData = postData;
res.end(JSON.stringify(responseData));
});
}
});
server.listen(5000, () => {
console.log("server running at prot 5000");
});
博客项目实战
搭建开发环境
npm init -y
npm install nodemon -D --registry=https://registry.npm.taobao.org
bin/www.js
// 创建服务器
const http = require("http");
const serverHandler = require("../app");
const PORT = 5000;
const server = http.createServer(serverHandler);
server.listen(PORT, () => {
console.log("server running at prot 5000");
});
app.js
const serverHandler = (req, res) => {
res.setHeader("Content-Type", "application/json");
const responseData = {
name: "nodeJS学习",
age: 21,
};
res.end(JSON.stringify(responseData));
};
module.exports = serverHandler;
初始化路由
src/routes/blog.js
// 处理博客相关的路由
const handleBlogRoute = (req, res) => {
// 定义处理路由的逻辑
const method = req.method;
if (method === "GET" && req.path === "/ap