express

cnpm install express-generator -g ;express框架生成器(脚手架)

express --view=ejs e-app ;生成ejs模板语法

SET DEBUG=e-app:* & npm start ; 运行生成的项目

express -v ;查看express版本

 

npm install express

npm install body-parser 获取post参数使用

npm install art-template express-art-template 获取模板引擎

参数|send

send对比end

  1. send方法内部会检测响应内容的类型(可以send对象)

  2. send方法会自动设置http状态码

  3. 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 获取模板引擎

  1. 模板中文件的路径是相对于当前访问的路由[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');
}

 

posted @ 2020-11-04 15:24  良荣十贰  阅读(135)  评论(0)    收藏  举报