• Express应用


    # express

    ## 简介

        web开发应用

    ## 下载

        npm install express   

    ## 中间件

        中间件方法和请求处理函数

        app.get('请求路径','处理函数');

        app.post('请求路径','处理函数');

    ## 处理get请求参数

        req.query

    ## 处理post请求参数

        使用中间件  body-parser

        通过req.body

    典型模板

    const express = require('express');

    //创建网站服务器

    const app = express();

    app.get('/', (req, res) => {

    res.send('hello world!');

    });

    app.get('/news', (req, res) => {

    //send():会检测响应内容的类型,自动设置状态码

    res.send('whats up?!');

    });

    app.listen(7788);

    console.log('app is running!');


    Cannot set headers after they are sent to the client

    res.send() //不支持重复提交!

    // 入口全部响应

    app.get('*', (req, res, next) => {

    console.log(++count);

    next();  //支持跳转

    });

    app.get('/req1', (req, res, next) => {

    console.log(1111);

    res.send('hello');

    console.log(2222);

    next();

    res.send('world');

    console.log(3333);

    next();

    });


    //中间件:app.use()匹配

    app.use((req, res, next) => {

    console.log(123);

    });

    app.get('/req1', (req, res, next) => {

    res.send(req.query.a + '—' + req.query.b);

    });

    app.post('/post', (req, res) => {

    console.log(req.body);

    res.send(req.body);

    });

    // 获取文件内容

    fs.readFile('./2.js', 'utf8', (err, data) => {

    if (err != null) {

    next(err);

            } else {

    res.send(data);

            }

        })

    //处理错误中间件

    app.use((err, req, res, next) => {

    res.status(500).send(err.message);

    });


    express.Router()  获取路由:改变根路径地址

    /home作为根目录,进行跳转

    http://localhost:8899/home/index


    //实现将模块对象统一管理

    const express = require('express');

    const app = express();

    //创建路由对象

    const home = express.Router();

    //二级路由  /home/index

    home.get('/', (req, res) => {

    res.send('home');

    });

    home.get('/index', (req, res) => {

    res.send('welcome');

    });

    app.use('/home', home);

    app.listen(8899);

    多个根目录:

    const app = express();

    const home = require('./route/home');

    const admin = require('./route/admin');

    app.use('/admin', admin);

    app.use('/home', home);


    //其他路由

    const express = require('express');

    const admin = express.Router();

    admin.get('/index', (req, res, next) => {

    res.send('/admin/index');

    next();

    });

    module.exports = admin;


    ??访问静态资源问题

    //express 访问静态资源

    //app.use(express.static('public'));

    app.use('/static', express.static('public'));


    模板引擎应用

    render && view


    //配置模板引擎

    app.engine('art', require('express-art-template'));

    //设置模板存放的目录

    app.set('views', path.join(__dirname, 'views'));

    //设置默认的模板扩展名

    app.set('view engine', 'art');


    app.get('/index', (req, res) => {

    res.render('index');

    });

    app.get('/news', (req, res) => {

    res.render('news', {

    msg: 'hello world'

        });

    });

    //对应views目录下存在如下文件 news.art  index.art

    <!DOCTYPE html>

    <html lang="en">

    <head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Document</title>

    </head>

    <body>

    <ul>

    <li>{{msg}}</li>

    <li>{{msg}}</li>

    <li>{{msg}}</li>

    </ul>

    <p>{{msg}}</p>

    </body>

    </html>

    // 设置目标值

    let dataObj = {

    msg: 'hello world'

    };

    //或者

    app.locals.msg = 'hello';


    文件所在当前路径+文件名

    //let pathName = path.join(__dirname, './2.js');

  • 相关阅读:
    UVa 10088 (Pick定理) Trees on My Island
    LA 3295 (计数 容斥原理) Counting Triangles
    LA 5846 (计数) Neon Sign
    java是什么?软帝学院告诉你学Java能做什么?Java有什么特性?
    【软帝学院】一套好的java基础教学视频需要哪些有哪些内容
    推荐五个java基础学习网站,小白必备
    学习java设计模式有用吗?懂这六个原则,编程更轻松
    Java是什么?只需5分钟,了解java必须要知道的知识点
    软帝学院:自学java到底难不难?做好这几步,少走3年弯路
    软帝学院:java开发程序很难吗?学会这十步,5分钟搞定一个程序
  • 原文地址:https://www.cnblogs.com/macro-renzhansheng/p/13042565.html
Copyright © 2020-2023  润新知