引言

*因为nodejs是之前很久学的,当初曾经遗记了语法规定,当初间接从框架下手,反其道而行之去了解nodejs。
在nodejs外面创立web服务器是很麻烦的事件,要用到http模块,express框架就是来优化这么一个过程的工具。
在学习express框架的时候发现了它于vue的殊途同归之妙,在路由上的用法及其类似。可能这也是为什么vue和express都叫做框架的起因吧,不过express是服务端的框架。*

装置

在终端应用    `cnpm/npm install express`即可

应用

    //须要绑定到一个对象身上能力去应用它,所以    const express = require('express');    //绑定之后须要用这个对象去创立一个web服务器    const app = express();    //增加路由,get只能增加特定路由,如果为'/'则404,但use都能够用,祥见下一篇文章    app.get('/home', (req, res) => {        res.send("第一个页面")    })    //在创立实现之后须要映射到一个端口下来发挥作用    app.listen(3000)    //表明一下程序曾经运行了    console.log('运行完结');

根底性能

如果只用根本的创立服务器那真的太节约express了,它还包含很多简单的性能

中间件

        //在回调函数外面退出next,在最初一行指定指标        app.get('/home', (req, res, next) => {            console.log('跳转到下一路由');            next();        })        //下一路由地址放弃雷同        app.get('/home',(req,res)=>{            res.send('跳转路由实现')        })
        //或者应用use来承受所有信息,路由为空示意接管全副        app.use((req,res)=>{            res.send('跳转路由实现')        })

中间件之拦挡

        //如果网站正在保护,则能够拦挡所有申请        app.use((req,res)=>{            res.send('网站正在保护')        })                //如果是产生谬误则进行拦挡        app.get('/index', (req, res) => {            throw new Error('程序产生谬误');        })        //用use接管所有错误信息,这里必须要填next        app.use((err, req, res, next) => {            //因为用的框架,所以状态码就算遇到谬误也会是200,这里设置成500            res.status(500).send(err.message);        })

拦挡异步谬误

//引入异步模块        const promisify = require('util').promisify        //引入读写模块        const fs = require('fs')        //让读写模块异步        const readFile = promisify(fs.readFile)
app.get('/index', async(req, res,next) => {            try {                //轻易设置门路让程序抛出谬误                await readFile('不存在.txt')            } catch (err) {                next(err)            }        })        app.use((err, req, res, next) => {            res.send(err)        })

路由模块化

    在express中能够通过内置构造函数router生成二级路由    
//创立路由对象        const home=express.Router();        //用use指向子路由        app.use('/home',home)        //子路由地址为/index        home.get('/index',(req,res)=>{            res.send('子路由模块')        })
        在理论开发过程中个别会把两个路由写在不同的文件外面    在主路由外面引入并进行门路匹配

index.js:

const home=require('./home.js')        app.use('/home',home)

home.js:

const express = require('express');        const home = express.Router();                home.get('/index', (req, res) => {            res.send("欢送来到主页")        });     module.exports = home