学习总结
这周开始了node的学习 但因为还要进行期末的备考 所以只是初步的学习
介绍node
node是一个JS运行环境 JS代码写好之后需要放到浏览器里面去运行,脱离了浏览器是没有办法运行的,现在不仅浏览器能运行JS,Node也能运行Js。
● 正常情况下io操作是堵塞的 用node处理高并发很好
● 网络请求 数据库处理 文件读写
● 防止甩锅 能书写api(接口文档)
● 限制语言环境的不是语言本身 而是语言的运行环境
node读取文件分为同步读取和异步读取
同步
用try catch捕获错误
const fs=require("fs");
// 同步操作 在关键位置捕获错误信息 让程序不崩溃
try{
// 可能出错的代码
let dirs=fs.readFileSync("./node02");
}
catch(error){
console.log("出错了");
console.log(error);
}
console.log(2222);
异步
// 异步读取
fs.readdir("./",(error,data)=>{
if(error){
// error为真是有错误
console.log(error);
console.log(error.error);
}
else{
console.log(data);
}
})
// 错误回调优先 回调函数 第一个参数是表示错误对象
// 默认值为null
Url对资源库进行统一
parse()将字符串转化为对象
format()将对象转化为字符串
const { parse } = require("path");
const url=require("url");
let urlString="https://www.bilibili.com/video/BV1BE411i7uy/?p=7&spm_id_from=pageDriver&vd_source=3abac4f86f01410855c034333752d506"
let urlObj=url.parse(urlString);
console.log(urlObj);
// parse:将字符串转化为对象
let obj={
protocol: 'https:',
slashes: true,
auth: null,
host: 'www.bilibili.com',
port: null,
hostname: 'www.bilibili.com',
hash: null,
search: '?p=7&spm_id_from=pageDriver&vd_source=3abac4f86f01410855c034333752d506',
query: 'p=7&spm_id_from=pageDriver&vd_source=3abac4f86f01410855c034333752d506',
pathname: '/video/BV1BE411i7uy/',
path: '/video/BV1BE411i7uy/?p=7&spm_id_from=pageDriver&vd_source=3abac4f86f01410855c034333752d506',
href: 'https://www.bilibili.com/video/BV1BE411i7uy/?p=7&spm_id_from=pageDriver&vd_source=3abac4f86f01410855c034333752d506'
}
let string=url.format(obj);
console.log(string);
express书写post和get请求
// 安装express
const express = require("express");
const bodyParse = require("body-parser")
// app.use(使用插件)
const { error } = require("jquery");
const app = express();
// 解析表单的数据
app.use(bodyParse.urlencoded({ extended: false }))
// 解析json
app.use(bodyParse.json());
// 开启了一个node服务器
// 监听3000端口
// req请求 res返回结果
app.get("/user/login",(req,res)=>{
// 接受get参数 req.query
console.log(req.query);
// 处理参数
let {user,ps}=req.query;
if(user==="wangziyue"&&ps==456){
res.send({err:0,msg:'regist ok'})
}
else{
res.send({err:-1,msg:'regist ok'})
}
})
app.post("/user/regist", (req, res) => {
// 接受post数据
// 消息体 请求体
// req.body
console.log(req.body);
let { user, ps } = req.body;
// body-parse
if (user == 123 && ps == 234) {
res.send({ err: 0, msg: 'regist ok' })
} else {
res.send({ err: -1, msg: 'regist err' })
}
})
app.listen(9000, () => {
console.log("开启服务器");
})
get的数据在req.query
post在req.body 不能被解析 需要下载插件
总结
希望考试能顺利通过 天天开心