const express = require("express");
const path = require("path");
const app = express();
/*
热更新
在全局之下使用命令npm i nodemon -g
将nodemon模块安装到全局环境之下,这样使用一次nodemon + fileName命令,下次就不用再执行重启命令了,直接刷新页面即可。
*/
app.use(express.json());
app.use(express.urlencoded({extended:true}));
app.listen(5666);
/*
静态文件的访问!!!
初始当我们需要访问文件下的静态文件时,我们则需要监听不同的路由,需要把所有的路径都写一遍
当时当文件很多的时候,我们则需要些很多的路由监听
这样很不切合实际!!!
这是我们可以用express的express.static("路径名称")可以是绝对路径,也可以是相对路径
*/
app.use(express.static("./public"));
//如果开放的静态资源目录里面有index.html文件,则不需要监听,默认根路由会打开这个页面。
app.get("/img/:name",(req,res)=>{
res.sendFile(path.join(__dirname,"/public/img/"+req.params.name+".jpg"));
})
//png,jpg,jpeg,jif格式后缀的文件会在网页中呈现,而.jfif后缀名的图片文件会直接下载到本地
//访问静态文件里面的文件的时候,路由里面不要加上静态文件的名字,直接写里面的路径就可以了
//相关API的学习
//参考网站:https://www.expressjs.com.cn/4x/api.html
//总结:
/*
* express
* express()启动服务
* listen监听端口
*
* 中间件
* 数据处理的:
* app.use(express.json());
app.use(express.urlencoded({extended:true}));
* cookie处理:
*
* 静态资源
* app.use(express.static("./public"));
*
* 路由监听(get、post)
* req
* req.query
* req.body
* req.cookies
*
* req.params
* 路由参数(:的形式监听路由)
*
* !!!子路由的形式只能适用于页面比较少的情况(它只是把子路由文件规范化,文件单独写出来<用require("")>)
* 为了长远的考虑,当页面成百上千万的时候:
* @例如:百度知道网站,在路由参数的末尾给一个参数,它就能响应不同的页面
* 写法:在路由后面加上 /:参数名 例: /:id req.params==>返回{id:你所输入的内容}
* 人家把参数名对应的东西存在数据库里面,同过req.params得到请求的数据对象,然后再对应的去数据库取值
* 然后前端通过模板引擎,把数据渲染出来
*
* res
* res.status() 设置返回状态码
* res.send()
* res.sendFile()
*
* Router() 子路由
*
*/