Express

518 阅读2分钟

Web框架

功能

可以更方便的处理http请求与响应
更方便的连接数据库/Redis
更方便的路由,其他(html模板)

理念

Web框架的主流思路都是MVC
Model处理数据相关的逻辑
View处理视图相关的逻辑
前后分离之后,View不重要
Controller负责其他逻辑

安装依赖

请根据实际需求安装

yarn add express
yarn global add node-dev //用于快速调试
yarn global add typescript-node//这次用ts学习express
yarn add @types/express --dev//安装类型支持
tsc --init//创建tsconfig.json文件,用于设置ts

express脚手架

yarn global add express-generator//快速创建express项目

通过脚手架我们可以得到一个express的demo,以及目录结构

用TypeScript 开发 Express 应用

yarn add @types/node //添加node类型支持

express编程模型

每一个fn都是一个中间件
通过调用next可以进入下一个中间件


import express from 'express'

const app = express()

app.use((req, res, next) => {
    console.log(req.url)
    res.write('hi')
    next()
})
app.use((req, res, next) => {
    console.log('2')
    res.write('hi')
    res.end()
})
app.listen(3000, () => {
    console.log('正在listen 3000')
})

子应用

let app = express()//主应用
let admin = express()//另一个应用
app.use('/admin',admin)//admin作子应用
// '/admin'就是admin的挂载点

express提供的api

express.json()//用于解析json对象,添加到request.body的中间件
express.raw()//用于解析二进制数据添加到request.body的中间件
express.static()//静态文件中间件
app.set('views','目录名')//配置视图文件
app.set('view engine', 'ejs')//使用ejs进行渲染
app.set('case sensitive routing',true)//是否开启大小写敏感
res.render('app',{title:'我的网站'})//渲染app,并且向模板文件传递数据

request.app //是一个全局对象
request.get('Content-Type')//获取请求头
response.set('key','value')//设置响应头
response.append('key','vlaue')//添加响应头
response.attachment('path/to/logo.png')//设置下载文件的默认名字
response.cookie('name','value')//设置cookie
response.download('path')//下载文件,接受路径或者二进制数据
response.format()//设置返回对应的类型信息
response.headersSent()//检测之前的中间件是否已经调用了send

demo