express是什么
基于nodejs的web开发框架。
引言
旧时代用http模块实现服务器,太麻烦。
express步骤
npm install express(npm 安装express)
下面实现代码
const express = require("express");
const hostname = "localhost";
const port = 3000;
const app = express();
app.get("/", (req, res) => {
res.render("hello word");
});
app.listen(port, () => {
console.log(`server running at http:\\${hostname}:${port}/`);
});
简单web服务器创建完成。 node 执行js文件可以访问
编写一个中间件
理解中间件概念:将具体业务逻辑和底层逻辑解耦的组件。
express中中间件是一个具有特殊功能的函数
举例:function someMiddleware(req,res,next){
//自定义逻辑
next()
}
参数中,req和res就是前面提到的request请求对象和response响应对象,next触发下一个中间件的执行。
express中间件有两种方式:全局中间件和路由中间件。
全局中间件:
通过app.use函数就可以注册中间件并且此中间件会在用户发起任何请求都可能执行,例如:
app.use(someMiddleware)
路由中间件:
通过路由定义时注册中间件,此中间件只会在用户访问该路由对应的url时执行,例如:
app.get('/middleware',someMiddleware,(req,res)=>{
res.send('hello word')
})
那么用户只有在访问/middleware时,定义的someMiddleware中间件才会被触发。
编写中间件loggingMiddleware(终端打印访问时间和url)
const express = require("express");
const hostname = "localhost";
const port = 3000;
const app = express();
function loggingMiddleware(req,res,next){
const time = new Date()
console.log(`[${time.toLocaleString()}] ${req.url}`)
next()
}
app.use(loggingMiddleware)
app.get('/',(req,res)=>{
res.send("hello word")
})
app.listen(port, () => {
console.log(`server running at http:\\${hostname}:${port}/`);
});
使用模板引擎渲染页面
npm install ejs
创建views文件夹,放置模板
在views文件夹创建index.ejs代码如下
<h1>这是index.ejs</h1>
<h2 href="/second">链接到第二个模板</h2>
创建second.ejs
<h2>这是模板2页面</h2>
server.js代码
app.set('views','./views')
app.set('view engine','ejs')
app.get('/',(req,res)=>{
res.render('index')
})
app.get("/second",(req,res)=>{
res.render('second')
})
再次运行服务器访问页面
添加静态文件服务
使用express.static
在根目录创建public/css/style.css
app.use(express.static('public'))即可
http:localhost:3000/css/style.css即可访问
在ejs模板使用<link rel="stylesheet" href="/css/style.css" />可以链接css文件
处理错误
app.use('*',(req,res)=>{
res.status(404).send("404,访问页面不存在")
})