express
express --view=ejs e-app ;生成ejs模板语法
SET DEBUG=e-app:* & npm start ; 运行生成的项目
npm install express
npm install body-parser 获取post参数使用
npm install art-template express-art-template 获取模板引擎
参数|send
send对比end
-
send方法内部会检测响应内容的类型(可以send对象)
-
send方法会自动设置http状态码
-
send方法会自动设置响应的内容类型及编码(自动设置utf8)
//引入express框架,post参数模块
const express =require('express')
const bodyParser = require('body-parser')
//创建网站服务器
const app = express();
//使用req.body获取post参数添加
app.use(bodyParser.urlencoded({extended:false}))
//加载静态页面
app.use(express.static(public的路径)
app.get('/',(req,res)=>{
//使用req.query获取GET参数、同样使用req.params获取id等属性
console.log(req.query);
res.send({name:'张三',age:20})
})
app.post('/add',(req,res)=>{
//使用req.body获取POST参数
console.log(req.body);
res.send('使用post方式获取了路由')
})
app.listen(3000)
路由
const express = require('express')
//使用express.Router()方法注册路由
const home = express.Router()
home.get('/',(req,res)=>{
res.send('请求首页成功')
})
module.exports = home
//app.js中的使用
const express = require('express')
const app = express()
const home = require('./router/home')
const admin = require('./router/admin')
app.use('/home',home)
app.use('/admin',admin)
app.listen(80)
中间件
app.user
//所有地址都会经过的中间件
app.use((req,res,next)=>{
console.log(req.url);
next()
})
app.use('/request',(req,res,next)=>{
console.log('客户端访问request执行该中间件');
next()
})
使用场景
开始:登录拦截|维护通知|错误处理
结束:页面404
注意店:try-catch处理错误只能处理同步和异步代码,不能处理promise和回调
app.use((req,res,next)=>{
res.send('页面维护中')
})
app.use('/admin',(req,res,next)=>{
const pass = true
res.send(pass?'登录成功':'失败')
})
app.use((req,res,next)=>{
res.send('找不到您要的也买你')
})
//错误处理中间键
app.use((err,req,res,next)=>{
res.status(500).send(err.message)
})
//在函数中自己抛出错误
app.get('/index',(req,res,next)=>{
fs.readFile('文件',(err,res)=>{
if(err!=null){
next(err)
}
})
})
模板引擎
npm install art-template express-art-template 获取模板引擎
-
模板中文件的路径是相对于当前访问的路由[admin/login中的admin],所以要么就需要将路由名字与静态资源名字保持一致,要么将模板中的路径设置为绝对路径
//引入express框架
const express =require('express')
const path = require('path')
const app = express();
//当渲染文件后缀为art时 使用express-art-template模板
app.engine('art',require('express-art-template'))
//设置模板存放目录,第一个参数固定
app.set('views',path.join(__dirname,'views'));
//设置默认拼接art后缀
app.set('view engine','art');
app.get('/index',(req,res)=>{
//render将会拼接模板路径与后缀
//哪一个模板和数据经行拼接
//将拼接结果响应给客户端
res.render('index',{
msg:'message'
})
})
app.listen(3000)
console.log('服务器请求成功');
公共数据
app.locals用于设置原型数据
在每个req中同样也有app.locals属性
module.exports = (req, res) => {
// 标识 标识当前访问的是文章管理页面
req.app.locals.currentLink = 'article';
res.render('admin/article-edit.art');
}

浙公网安备 33010602011771号