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

    你可能感兴趣的文章
    Netty相关
    查看>>
    Netty简介
    查看>>
    Netty遇到TCP发送缓冲区满了 写半包操作该如何处理
    查看>>
    Netty:ChannelPipeline和ChannelHandler为什么会鬼混在一起?
    查看>>
    Netty:原理架构解析
    查看>>
    Network Dissection:Quantifying Interpretability of Deep Visual Representations(深层视觉表征的量化解释)
    查看>>
    Network Sniffer and Connection Analyzer
    查看>>
    Network 灰鸽宝典【目录】
    查看>>
    NetworkX系列教程(11)-graph和其他数据格式转换
    查看>>
    Networkx读取军械调查-ITN综合传输网络?/读取GML文件
    查看>>
    network小学习
    查看>>
    Netwox网络工具使用详解
    查看>>
    Net与Flex入门
    查看>>
    net包之IPConn
    查看>>
    Net操作配置文件(Web.config|App.config)通用类
    查看>>
    Neutron系列 : Neutron OVS OpenFlow 流表 和 L2 Population(7)
    查看>>
    New Relic——手机应用app开发达人的福利立即就到啦!
    查看>>
    NFinal学习笔记 02—NFinalBuild
    查看>>
    NFS
    查看>>
    NFS Server及Client配置与挂载详解
    查看>>