javascript - 拆分express和app有什么目的吗?
问题描述
我在(每个?) Express 应用程序中看到这两行。
const express = require('express');
const app = express();
我想知道是否可以将任何参数传递给express()
?
在这里检查并没有看到任何
https://expressjs.com/en/4x/api.html
为什么有些方法在 express() 上,有些在 app() 上?
似乎它们应该组合在一起,并且在一个对象上拥有所有方法。
解决方案
express
不带任何参数,不。调用它的目的是创建应用程序对象,因此即使没有参数,您必须调用它也是有意义的。
你经常看到的另一种写法是:
const app = require("express")();
不过,在使用 ESM 时,它需要再次分开。
import express from "express"; // Or similar
const app = express();
在评论中你说:
例如,在创建应用程序的情况下我能做些什么有用的事情?有什么我只能用快递做的吗?
据我所知,您必须至少创建一个 Application 对象才能对 Express 做任何有用的事情。请注意,您不必只创建一个应用程序。这是典型的用例,但没有理由不能创建在不同端口上运行的多个应用程序。
您可能想知道为什么 express 不能直接从require
. 原因是模块只加载一次并缓存,所以你得到的东西require
是共享的。因此 Express 导出了express
用于创建 Application 对象(或多个对象,如果您想要多个对象)的函数。
推荐阅读
- perl - 在 Perl 中读取和解析 XBRL 文件(或转换成普通的 XML / JSON!)
- java - 休眠记录器不替换 %s
- macos - 无法在 macOS Catalina 上使用 dnsmasq,ping 导致“未知主机”错误
- node.js - 用于克隆 Bitbbuket 存储库并推送到 s3 的 Nodejs-Lambda 函数
- r - 为什么 R 不再打开我保存的文档?
- nginx - NGINX 反向代理不从端口 80 转发
- css - 将 css 样式转换为材质 ui makeStyles
- javascript - 在继续之前等待一个功能完成的最佳方法是什么?
- c++ - 多项式导数计算器c ++中的问题
- r - 重置 actionButton 以在 Shiny 中多次显示 modaldialog