zoukankan      html  css  js  c++  java
  • 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');

  • 相关阅读:
    02. 爬取get请求的页面数据
    配置visual studio code进行asp.net core rc2的开发(转载jeffreywu)
    C#条件编译,发布多平台和多种选择性的项目
    控制台当前行显示进度条,不换行
    对"使用Mono Runtime Bundle制作安装包让C#桌面应用程序脱离net framework"增加说明
    ASP.NET Core文章汇总
    jquery.tmpl 用法(附上详细案例)
    Pure扩展站--个人博客
    使用@media做自适应
    简单的计划任务实现。。。
  • 原文地址:https://www.cnblogs.com/macro-renzhansheng/p/13042565.html
Copyright © 2011-2022 走看看