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