博客
关于我
nodejs系列之express
阅读量:793 次
发布时间:2023-02-16

本文共 2050 字,大约阅读时间需要 6 分钟。

Express框架概述

Express框架特点

Express是基于Node.js的流行Web开发框架,适合快速搭建高效的Web应用。其核心优势在于简化了服务器端开发流程,通过提供一系列功能强大的中间件,帮助开发者高效完成HTTP服务开发。

环境搭建

通过Express的应用生成器工具express-generator,开发者可以快速创建项目骨架。以下是环境搭建的步骤:

$ npm install express-generator -g

Express运行原理

Express框架建立在Node.js内置的http模块之上。原始的http模块实现了服务器端的基本功能,而Express通过对其进行抽象和封装,使开发者能够更高效地构建应用。

http模块示例

以下是使用http模块创建服务器的原始代码:

var http = require("http");var app = http.createServer(function(request, response) {    response.writeHead(200, {"Content-Type": "text/plain"});    response.end("Hello world!");});app.listen(3000, "localhost");

Express改写示例

使用Express框架重写后的代码如下:

var express = require('express');var app = express();app.get('/', function (req, res) {    res.send('Hello world!');});app.listen(3000);

中间件概念

中间件是Express应用的核心组成部分,主要负责处理HTTP请求。每个中间件接受三个参数:request(请求对象)、response(响应对象)和next(下一个中间件)。其主要职责是对请求进行加工,并决定是否调用下一个中间件或终止请求处理流程。

中间件类型

  • 静态中间件:不修改请求内容,只将请求传递给下一个中间件。
  • function uselessMiddleware(req, res, next) {    next();}
    1. 错误处理中间件:通过传递错误信息终止请求处理流程。
    2. function uselessMiddleware(req, res, next) {    next('出错了!');}

      Express中间件的使用

      Express框架提供了use方法用于注册中间件。以下是一个连续调用两个中间件的示例:

      var express = require("express");var http = require("http");var app = express();app.use(function(request, response, next) {    console.log("In comes a " + request.method + " to " + request.url);    next();});app.use(function(request, response) {    response.writeHead(200, { "Content-Type": "text/plain" });    response.end("Hello world!\n");});http.createServer(app).listen(1337);

      路由实现

      通过use方法,开发者可以根据请求路径实现简单的路由控制。例如:

      var express = require("express");var app = express();app.use(function(request, response, next) {    if (request.url == "/") {        response.writeHead(200, { "Content-Type": "text/plain" });        response.end("Welcome to the homepage!\n");    } else {        next();    }});app.use(function(request, response, next) {    if (request.url == "/about") {        response.writeHead(200, { "Content-Type": "text/plain" });        response.end("About页面内容!\n");    } else {        next();    }});

      通过上述代码,开发者可以根据请求路径自由定义不同的响应行为。

    转载地址:http://qxjfk.baihongyu.com/

    你可能感兴趣的文章
    nginx 代理解决跨域
    查看>>
    Nginx 动静分离与负载均衡的实现
    查看>>
    Nginx 反向代理 MinIO 及 ruoyi-vue-pro 配置 MinIO 详解
    查看>>
    nginx 反向代理 转发请求时,有时好有时没反应,产生原因及解决
    查看>>
    Nginx 反向代理解决跨域问题
    查看>>
    Nginx 反向代理配置去除前缀
    查看>>
    nginx 后端获取真实ip
    查看>>
    Nginx 多端口配置和访问异常问题的排查与优化
    查看>>
    Nginx 如何代理转发传递真实 ip 地址?
    查看>>
    Nginx 学习总结(16)—— 动静分离、压缩、缓存、黑白名单、性能等内容温习
    查看>>
    Nginx 学习总结(17)—— 8 个免费开源 Nginx 管理系统,轻松管理 Nginx 站点配置
    查看>>
    Nginx 学习(一):Nginx 下载和启动
    查看>>
    nginx 常用指令配置总结
    查看>>
    Nginx 常用配置清单
    查看>>
    nginx 常用配置记录
    查看>>
    nginx 开启ssl模块 [emerg] the “ssl“ parameter requires ngx_http_ssl_module in /usr/local/nginx
    查看>>
    Nginx 我们必须知道的那些事
    查看>>
    Nginx 的 proxy_pass 使用简介
    查看>>
    Nginx 的配置文件中的 keepalive 介绍
    查看>>
    Nginx 结合 consul 实现动态负载均衡
    查看>>