• UData查询引擎优化-如何让一条SQL性能提升数倍


    个人对nodejs的使用也是从express开始的,从使用express至今也有好几年了,当时都没有好好的去总结下,乘着最近有空重头再看看这个陪伴了我们这么久的好用的express框架。

    初始化

    express创建项目的方式有两种一种是自己通过npm安装相关插件创建,一种可以通过express生成器来创建。

    • 通过npm初始化配置
    // 初始化配置文件
    npm init 
    
    • 1
    • 2
    // 安装express
    npm install express --save 
    
    • 1
    • 2
    //新建app.js应用文件
    let express = require("express");
    let app = express();
    
    app.listen(3000,function(err){ console.log("serve is starting:3000!") 
    })
    // 运行app.js
    node app.js 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    运行是控制台可以看到日志输出,简单的几行代码就能启动一个服务,这正是express(node)方便之处。

    • 通过express生成器创建
    npm install express-generator -g
    //express + 目录名
    express app
    cd app
    npm run start 
    
    • 1
    • 2
    • 3
    • 4
    • 5

    浏览器打开http://localhost:3000/ 可以看到如下页面

    路由

    express路由是express的核心功能,其路由API有两种一个是express返回的app,另一个是express.Router()返回的可安装的模块化路由处理程序。我们在开发中经常会两者结合使用。

    express的基本路由

    • 使用方式
    let express = require('express');
    let app = express();
    //结构如下
    app.METHOD(PATH,HANDLER) 
    
    • 1
    • 2
    • 3
    • 4

    METHOD是请求方法主要有:GET POST PUT DELETE PATCH

    PATH是请求路径:字符串 正则

    HANDLER 是在路由匹配时执行的函数。

    • 路由方法:METHOD
    // GET method route
    app.get('/', function (req, res) {res.send('this is GET');
    });
    
    // POST method route
    app.post('/', function (req, res) {res.send('this is POST');
    });
    // all表示匹配所有的方法
    app.all('/secret', function (req, res, next) {console.log('Accessing the secret section ...');next(); // pass control to the next handler
    }); 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 路由路径PATH:路由路径与请求方法相结合,用于定义可以在其中提出请求的端点。路由路径可以是字符串、字符串模式或正则表达式
    // 字符串路径,此路径可以看做为完全匹配
    app.get('/string', function (req, res) {res.send('string');
    }); 
    
    • 1
    • 2
    • 3
    // 基于字符串模式的路由路径,此路由路径将匹配 `abcd`、`abbcd`、`abbbcd` 等。
    app.get('/demo?example', function(req, res) {res.send('demo?example');
    }); 
    
    • 1
    • 2
    • 3
    // 以下是基于正则表达式的路由路径,此路由将匹配demo结尾的所有字符串
    app.get(/.*demo$/, function(req, res) {res.send('/.*demo$/');
    }); 
    
    • 1
    • 2
    • 3
    • 补充:链式路由

    express的模板路由

    使用 express.Router 类来创建可安装的模块化路由处理程序。Router 实例是完整的中间件和路由系统;因此,常常将其称为“微型应用程序”

    • 使用方式
    let express = require('express');
    let router = express.Router();
    // middleware that is specific to this router
    router.use(function timeLog(req, res, next) {console.log('Time: ', Date.now());next();
    });
    
    // define the about route
    router.get('/about', function(req, res) {res.send('About birds');
    });
    
    module.exports = router; 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    注意:其路由的方法和路径和express的基本路由规则一致

    请求、返回处理

    express的请求和返回的对象是路由处理函数的参数也是对nodejs中Request和Response类的封装,一般用来获取请求参数和设置返回内容。

    Request

    • 常用参数
    参数描述
    req.path获取请求路径
    req.body获取请求体中的内容
    req.params获取请求主路径上传递的参数值
    req.cookies获取请求携带的cookie值
    req.query获取请求路径?后的参数
    • 常用方法
    方法描述
    res.accepts()检查是否acceptab指定的内容类型
    res.get()返回指定的HTTP请求报头字段(不区分大小写匹配)。Referrer和Referer字段是可以互换的。

    Response

    • 常用参数
    参数描述
    res.headersSent布尔属性,指示应用程序是否为响应发送HTTP报头。
    res.locals实现了模板和路由之间的传参
    • 常用方法
    方法描述
    res.download()提示将要下载文件。
    res.end()结束响应进程。
    res.json()发送 JSON 响应。
    res.jsonp()在 JSONP 的支持下发送 JSON 响应。
    res.redirect()重定向请求。
    res.render()呈现视图模板。
    res.send()发送各种类型的响应。
    res.sendFile()以八位元流形式发送文件。
    res.sendStatus()设置响应状态码并以响应主体形式发送其字符串表示。
    res.set()将响应的HTTP报头字段设置为value。要一次设置多个字段,需要传递一个对象作为参数。

    最后

    整理了75个JS高频面试题,并给出了答案和解析,基本上可以保证你能应付面试官关于JS的提问。



    有需要的小伙伴,可以点击下方卡片领取,无偿分享

  • 相关阅读:
    基苯乙烯微球支载L-脯氨酸磺酰胺/水滑石@磺化聚苯乙烯微球/石蜡聚苯乙烯微球的制备
    #分库分表-分片算法
    centos上安装rabbitmq
    40% 的云原生开发者专注于微服务领域
    云原生主题学习月|成为社区领学员,解锁专属奖励及超多数量社区学员奖品!
    基于matlab的COST231-hata信道模型性能仿真
    ros gazebo相关包的安装
    使用opencv qt 以及 tensorflow2 进行神经网络分类
    [附源码]SSM计算机毕业设计学生实习管理系统JAVA
    CSS模块化解决命名冲突---css module
  • 原文地址:https://blog.csdn.net/web2022050903/article/details/127551393