87 # express 应用和创建应用的分离

简介: 87 # express 应用和创建应用的分离
  1. 创建应用的过程和应用本身要进行分离。
  2. 路由和创建应用的过程也做一个分离。

下面实现创建应用的过程和应用本身要进行分离:

express.js

const Application = require("./application");
function createApplication() {
    // 通过类来实现分离操作
    return new Application();
}
module.exports = createApplication;

每次创建一个应用,路由系统应该是毫无关系的,应该创建一个全新的路由系统

新建 application.js

const http = require("http");
const url = require("url");
function Application() {
    this.routers = [
        {
            path: "*",
            method: "all",
            handler: (req, res) => {
                res.end(`kaimo-express Cannot ${req.method} ${req.url}`);
            }
        } // 默认路由
    ];
}
Application.prototype.get = function (path, handler) {
    this.routers.push({
        path,
        method: "get",
        handler
    });
};
Application.prototype.listen = function () {
    const server = http.createServer((req, res) => {
        const { pathname } = url.parse(req.url);
        const requestMethod = req.method.toLowerCase();
        for (let i = 1; i < this.routers.length; i++) {
            let { path, method, handler } = this.routers[i];
            if (path === pathname && method === requestMethod) {
                return handler(req, res);
            }
        }
        return this.routers[0].handler(req, res);
    });
    server.listen(...arguments);
};
module.exports = Application;

测试一下:

const express = require("./kaimo-express");
const app = express();
// 调用回调时 会将原生的 req 和 res 传入(req,res 在内部也被扩展了)
// 内部不会将回调函数包装成 promise
app.get("/", (req, res) => {
    res.end("ok");
});
app.get("/add", (req, res) => {
    res.end("add");
});
app.listen(3000, () => {
    console.log(`server start 3000`);
    console.log(`在线访问地址:http://localhost:3000/`);
});

目录
相关文章
|
7月前
88 # express 应用和路由的分离
88 # express 应用和路由的分离
16 0
|
4天前
|
JavaScript 中间件 API
中间件应用Express.js(Node.js)
我们定义了一个名为 `logger` 的中间件函数。它接受请求对象、响应对象以及下一个中间件函数作为参数。当接收到请求时,它会打印出请求的 HTTP 方法和 URL,然后调用 `next()` 函数来将控制权传递给下一个中间件或路由处理器。我们使用 `app.use()` 方法将 `logger` 中间件添加到了应用级别的中间件堆栈中,这意味着它将对所有请求生效。
12 3
|
7月前
|
弹性计算 开发框架 JavaScript
SAP UI5 应用开发教程之五十五 - 如何将本地 SAP UI5 应用通过 Node.js Express 部署到公网上试读版
SAP UI5 应用开发教程之五十五 - 如何将本地 SAP UI5 应用通过 Node.js Express 部署到公网上试读版
69 0
使用express-generator生成express应用
使用express-generator生成express应用
36 0
|
JavaScript 前端开发 中间件
前端需要去了解的nodejs知识(express应用搭建)
这是一个使用typescript和express的应用框架,快速搭建服务端项目。主要模块可以拆分为入口、路由、数据、工具、服务、业务。
|
机器学习/深度学习 JSON JavaScript
Express应用迁移 | 学习笔记
快速学习Express应用迁移
91 0
Express应用迁移 | 学习笔记
|
数据采集 前端开发 JavaScript
【node拓展】web开发模式 | express应用程序生成器
【node拓展】web开发模式 | express应用程序生成器
【node拓展】web开发模式 | express应用程序生成器
使用express-generator生成express应用
使用express-generator生成express应用
|
弹性计算 开发框架 JavaScript
|
中间件
express学习1-中间件应用
express学习1-中间件应用
99 0
express学习1-中间件应用