Express
使用教程node
搭建简易后端服务
- 安装
http
模块npm install http
// 引入 http 模块
const http = require('http');
const server = http.createServer( (request, response) => {
response.statusCode = 200
response.setHeader("Content-Type", "Content-Type", "text/html")
response.end("Hello World
");
})
// 监听端口 启动服务
app.listen( 3000, () => {
console.log("服务启动...")
})
// 浏览器中地址栏输入 localhost:3000 查看
Express
搭建后端服务
- 安装
express
npm install express
- 安装
nodemon
工具, 检测工作区代码变化, 自动重启npm install nodemon --save-dev
express
模块并使用const express = require('express');
const app = express();
app.get("/", (request, response) => {
// request: 请求对象, 前端请求传递的参数
// response: 响应对象, 给客户端返回内容数据 状态等
})
GET
POST
等方式请求接口, 都会经过回调返回相应的数据app.all("/about", (req, res) => { res.send({ username: "admin", password: "111111", tel: "13335333333", email: "[email protected]", }) })
app.get("/index", (req, res) => {
res.send({
code: 200,
msg: "成功",
success: false
})
})
app.get("ab?cd", (req,res) => {
// abcd / acd 字母 b 可有可无
res.send("ab?cd")
})
app.get("ab+cd", (req, res) => {
// ab...cd 中间可以有多个 b
res.send("ab+cd")
})
app.get("ab*cd", (req, res) => {
// ab...cd 中间可以是任何字符
res.send("ab*cd")
})
app.get(/a/, (req, res) => {
// 存在字符 a 的所有接口
res.send("/a/");
})
app.get(/.*fly$/, (req,res) => {
// 以 fly 结尾的所有接口
res.send("/.*fly$/")
})
express.Router()
进行路由拆分 const user = express.Router();
user.get("list", (req, res) => {
res.send({
code: 200,
msg: "成功",
success: true,
data: "list"
})
})
user.get("detail", (req, res) => {
res.send({
code: 200,
msg: "成功",
success: true,
data: "detail"
})
})
app.use("/user", user); // 注册 user 路由
全局中间件
function middleware( req, res, next) {
console.log("this is a golbal middleware");
next()
}
app.use(middleware); // 注册全局中间件
路由中间件
app.get( "user", (req, res, next) => {
console.log("this is a router middleware")
next()
}, (req, res) => {
res.send({
code: 200,
msg: "成功",
success: true,
data: "user"
})
})
function logger( req, res, next) {
const time = new Date();
console.log(`[${time.toLocalString()}] ${req.method} ${req.url}`)
}
app.use(logger);
app.get("/user", (req, res) => {
res.send({
code: 200,
msg: "成功",
success: true,
data: "user"
})
})
中间件不执行 next
回调函数 不会继续向下执行
渲染前端页面,
HTML
文档,
npm install hbs
views
文件夹views
文件夹中创建 index.hbs, 404.hbs..
等文件index.hbs
<h1>Express 模板引擎h1>
<p>使用 node.js 搭建后端服务器p>
<a href="/about">关 于a>
about.hbs
<h1>关于我们h1>
<link rel="stylesheet" href="/css/global.css" />
<p>使用 node.js express 框架搭建后端服务p>
<p>姓名: {{ name }}p>
404.hbs
<h1>找不到你要的页面了h1>
<p>你的访问路径{{ url }}不存在p>
// 指定模板存放目录
app.set("views", "views");
// 指定模板引擎为 Handlebars
app.set("view engine", "hbs");
app.get("/", (req, res) => {
res.render("index"); // 展示 index.hbs 中的页面内容
})
// 传值
app.get("/about", (req, res) => {
res.render("about", {
name: "张三" // about 文件中内容
})
})
// 处理 404 错误
app.use("*", (req, res) => {
res.status(404).render("404", {
url: req.originalUrl
})
})
app.use((err, req, res, next) => {
res.status(500).render("500");
});
客户端访问图片等静态资源文件
Express 自带静态服务中间件 express.static()
注册静态资源中间件
app.use(express.static("public"));