Express框架入门总结

使用Express框架搭建服务器会比原生js写法更简洁。javascript

// npm install express 下载插件

// 引入express框架
const express = require('express');
// 建立网站服务器
const app = express();

// 接收全部请求的中间件,任何请求都会先通过这个use中间件
//这里能够拦截全部的请求,进行判断
app.use((req, res, next) => {
    console.log('请求走了app.use中间件');
    //next能够进入下一个中间件,不然会停留在此
    next()
})

// 当客户端访问/request请求的时候走当前中间件
app.use('/request', (req, res, next) => {
        console.log('请求走了app.use / request中间件')
        next()
    })
    //设置get请求
app.get('/request', (req, res, next) => {
    req.name = "张三";
    next();
})

app.get('/request', (req, res) => {
    // 最终返回"张三"
    res.send(req.name)
})

// 监听端口
app.listen(3000);
console.log('网站服务器启动成功');

错误处理中间件;html

app.get('/index', (req, res, next) => {
    fs.readFile('./01.js', 'utf8', (err, result) => {
        if (err != null) {
            //若是出错,将错误传给中间件
            next(err)
        } else {
            res.send(result)
        }
    })
})

// 错误处理中间
app.use((err, req, res, next) => {
    //设置状态码为500并输出错误信息
    res.status(500).send(err.message);
})

异步函数错误的捕获;java

// 引入express框架
const express = require('express');
const fs = require('fs');
const promisify = require('util').promisify;
const readFile = promisify(fs.readFile);
// 建立网站服务器
const app = express();

app.get('/index', async(req, res, next) => {
    try {
        //异步函数错误须要手动捕获,成功则会跳过catch
        await readFile('./aaa.js')
    } catch (ex) {
        //若是代码出错会执行catch语句内的方法
        next(ex);
    }
})

// 错误处理中间
app.use((err, req, res, next) => {
    res.status(500).send(err.message);
})

构建模块化路由;express

//admin.js文件内容
const express = require('express');
//建立路由
const admin = express.Router();

admin.get('/index', (req, res) => {
    res.send('欢迎来到博客管理页面')
});
//模块导出,值是admin
module.exports = admin;

-----------------------------------------
//home.js文件内容
const express = require('express');
//建立路由
const home = express.Router();
home.get('/index', (req, res) => {
	res.send('欢迎来到博客首页页面')
});
//模块导出,值是home
module.exports = home;
-----------------------------------------

// 导入模块
const home = require('./route/home');
const admin = require('./route/admin');
//经过不一样的请求参数访问不一样的页面
app.use('/home', home);
app.use('/admin', admin);

获取get参数npm

//访问:localhost:3000/index?user=root&password=root
app.get('/index', (req, res) => {
	//req.query能够获取get请求参数,输出的结果为{"user":"root","password":"root"}
	res.send(req.query)
})

获取post参数服务器

// npm install body-parser 下载插件

// 引入express框架
const express = require('express');
const bodyParser = require('body-parser');
// 建立网站服务器
const app = express();
// 拦截全部请求
// extended: false 方法内部使用querystring模块处理请求参数的格式
// extended: true 方法内部使用第三方模块qs处理请求参数的格式
app.use(bodyParser.urlencoded({extended: false}))

app.post('/add', (req, res) => {
	// 接收post请求参数,body是bodyParser处理获得的
	res.send(req.body)
})

路由参数;app

//请求必需要有如下上参数才能调用 如:localhost:3000/index/1/zhangsan/18
app.get('/index/:id/:name/:age', (req, res) => {
	// 接收post请求参数,输出参数
	res.send(req.params)
})

静态资源访问功能框架

// 实现静态资源访问功能
// path.join(__dirname, 'public')路径解析,__dirname当前目录,public文件夹
// '/static'添加虚拟路径
// localhost:3000/static/文件名   便可直接访问
app.use('/static',express.static(path.join(__dirname, 'public')))

模板引擎异步

// npm install art-template express-art-template  同时下载两个插件,空格分开

const express = require('express');
const path = require('path');
const app = express();

// 1.告诉express框架使用什么模板引擎渲染什么后缀的模板文件
//  1.模板后缀
//  2.使用的模板引擎
app.engine('art', require('express-art-template'))
    // 2.告诉express框架模板存放的位置是什么
    // 第一个views是框架固定的,第二个是文件名
app.set('views', path.join(__dirname, 'views'))
    // 3.告诉express框架模板的默认后缀是什么
app.set('view engine', 'art');
//访问localhost:3000/index  便可访问
app.get('/index', (req, res) => {
    // res.render渲染模板,res.render作了如下几件事;
    // 1. 拼接模板路径
    // 2. 拼接模板后缀
    // 3. 哪个模板和哪个数据进行拼接
    // 4. 将拼接结果响应给了客户端
    res.render('index', {
        msg: 'message'
    })
});

app.locals对象async

//index.art文件跟list.art文件内容
{{ msg }}

<ul>
	{{each users}}
	<li>
		{{$value.name}}
		{{$value.age}}
	</li>
	{{/each}}
</ul>
---------------------------
//公共信息能够添加到locals中,这样全部的模板都能获取到
app.locals.users = [{
	name: 'zhangsan',
	age: 20
},{
	name: '李四',
	age: 30
}]

app.get('/index', (req, res) => {
	res.render('index', {
		msg: '首页'
	})
});

app.get('/list', (req, res) => {
	res.render('list', {
		msg: '列表页'
	});
})
相关文章
相关标签/搜索