博客
关于我
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/

    你可能感兴趣的文章
    ng 指令的自定义、使用
    查看>>
    nghttp3使用指南
    查看>>
    Nginx
    查看>>
    nginx + etcd 动态负载均衡实践(三)—— 基于nginx-upsync-module实现
    查看>>
    nginx + etcd 动态负载均衡实践(二)—— 组件安装
    查看>>
    nginx + etcd 动态负载均衡实践(四)—— 基于confd实现
    查看>>
    Nginx + Spring Boot 实现负载均衡
    查看>>
    Nginx + uWSGI + Flask + Vhost
    查看>>
    Nginx - Header详解
    查看>>
    Nginx - 反向代理、负载均衡、动静分离、底层原理(案例实战分析)
    查看>>
    nginx 1.24.0 安装nginx最新稳定版
    查看>>
    nginx 301 永久重定向
    查看>>
    nginx css,js合并插件,淘宝nginx合并js,css插件
    查看>>
    Nginx gateway集群和动态网关
    查看>>
    Nginx Location配置总结
    查看>>
    Nginx log文件写入失败?log文件权限设置问题
    查看>>
    Nginx Lua install
    查看>>
    nginx net::ERR_ABORTED 403 (Forbidden)
    查看>>
    Nginx SSL私有证书自签,且反代80端口
    查看>>
    Nginx upstream性能优化
    查看>>