fs
fileSystem 文件系统,主要用来操作本地文件
第三方模块
- axios,用来发起网络请求
- cheerio,用来解析 html 字符串
http
http 模块可以用来创建一个 web 服务器
const http = require('http') // 引入http
http.createServer(...) // 创建一个服务器
// console.log("1111");
const http = require("http");
const fs = require("fs");
// 创建一个web服务器,监听3333端口
// req request 请求,客户端向服务器发起
// res response 相应,服务器返回客户端
http
.createServer((req, res) => {
console.log(req.method);
console.log(req.url);
console.log(req.headers);
// if (req.url == "/index.html") {
// res.setHeader("Content-Type", "text/html;charset=utf-8"); // 设置请求头
// // res.end("你请求的是index.html");
// const strHtml = fs.readFileSync("./public/index.html").toString();
// res.end(strHtml);
// } else {
// res.end("hello world"); // 输出内容
// }
res.setHeader("Content-Type", "text/html;charset=utf-8");
// 创建了一个静态服务器,可以用来解析html等静态文件
if (req.url == "/" || req.url == "/favicon.ico") {
res.end("hello world");
} else {
try {
const strHtml = fs.readFileSync("./public" + req.url).toString();
res.end(strHtml);
} catch (err) {
res.statusCode = 404; // 设置404状态码
res.end("404");
}
}
})
.listen(3333);
url
用来解析 url 字符串
const url = require("url");
let strUrl = "http://localhost:3000/api/v1/users?id=8&b=9";
// url.parse 格式化url数据
// 第二个参数为bool值,为true的时候表示把query格式化为一个对象{id: 8, b: 9}
// 为false时query为id=8&b=9
const urlData = url.parse(strUrl, true);
console.log(urlData);
// protocol 协议 http,https
// host 主机名,包含主机和端口号
// hostname 主机,只有主机名字
// port 端口号
// query url中的条件,不包含?
// search url中的条件,包含?
// pathname 路径
// path 完整的路由包含查询条件
// href 带有协议域名端口号的完整地址
const url = require("url");
let strUrl = "http://localhost:3000/api/v1/users?id=8&b=9";
// url.parse 格式化url数据
// 第二个参数为bool值,为true的时候表示把query格式化为一个对象{id: 8, b: 9}
// 为false时query为id=8&b=9
const urlData = url.parse(strUrl, true);
console.log(urlData);
express
nodejs 中的一个 web 开发框架,可以使用 nodejs 搭建一个 web 系统
npm i express # 安装模块
# 用于快速结束没有任何数据的响应,使用res.end()。
# 响应中要发送JSON响应,使用res.json()。
# 响应中要发送数据,使用res.send() ,但要注意header ‘content-type’参数。
# 如果使用res.end()返回数据非常影响性能。
使用
const express = require("express");
const app = express();
app.get("/", (req, res) => {
res.send("hello express!!"); // 输出
});
app.listen(3333, () => {
console.log("服务器运行在3333端口");
});
demo1
const express = require("express");
const app = express();
// axios发送请求的时候content-type默认为application/json,传递的数据是json格式的
// jquery发送请求的时候content-type为url编码的,传递的数据是一个类似于:a=值&b=值2
// 所以,当页面使用的是jQuery时,
// 需要app.use(express.urlencoded());来获取请求体中使用了url编码的数据,否则增添的数据不会出来,只会有id。
app.use(express.urlencoded());
//如果前面的页面外部导入的是axios,
// 需要app.use(express.json());
// 任何一个web服务器默认的入口文件叫index.html
app.use("/", express.static("./public")); // 把public文件夹下的文件当做静态资源进行访问
// 参数一表示请求的地址
// 参数二表示请求的处理函数
// .get表示发起get请求
// .post delete put patch
app.get("/", (req, res) => {
res.send("战斗吧,暴龙兽!"); // 输出一个字符串
});
app.get("/api/v1/pets", (req, res) => {
// 从文件中读取数据进行展示
res.json([{
id: 1,
name: "暴龙兽",
},
{
id: 2,
name: "天使兽",
},
{
id: 3,
name: "皮卡丘",
},
{
id: 4,
name: "小白",
},
{
id: 5,
name: "xxx",
},
]); // 输出一个json数据
});
app.post("/api/v1/pets", (req, res) => {
// 把当前客户端传递的数据存储在文件里
res.json({
code: 1,
msg: "保存数据成功",
data: req.body, // req.body可以获取当前请求体中的数据
});
});
app.listen(3333, () => {
console.log("服务器运行在3333端口");
});
<h1>宠物列表</h1>
<ul class="list"></ul>
<form action="/api/v1/pets" method="post">
<input type="text" name="name" placeholder="请输入名字">
<input type="text" name="skills" placeholder="请输入技能">
<input type="submit" placeholder="提交">
</form>
<!--使用axios-->
<!--<script src="https://cdn.bootcdn.net/ajax/libs/axios/0.19.2/axios.min.js"></script>-->
<!--使用jQuery-->
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
$.ajax({
type: "get",
url: "/api/v1/pets",
success: function (response) {
let strHtml = '';
response.forEach(item => strHtml += `<li>${item.name}</li>`);
$('.list').html(strHtml);
}
});
</script>
demo2
nodemon
是一个 js 插件,可以让我们在修改代码之后自动进行服务器的重启操作
npm i nodemon -g # 全局安装nodemon
npm i nodemon
nodemon xx # 启动你的js文件
数组中常见的方法
- forEach
- map
- reduce
- push
- pop
- shift
- unshift
- sort
- find
- findIndex
- filter
- splice
- concat
- indexOf
请求报文
mongodb
数据库