我知道它的作用,但不知道如何...在 Express.js 中,"const app = express()"这一行究竟是如何工作的?



这是一个非常新手的节点/表达问题。它已经困扰我好几个星期了。我知道它的作用,我已经能够克服它,并使用Express构建一些东西,但我无法理解"const-app=Express(("行中使用的逻辑。我想我以前从未在javascript中看到过这种情况。在这种情况下,express是一个对象,而不是一个函数,对吗?这一行使变量"app"可以访问许多重要的方法,如"listen"one_answers"get"。但是这里的语法不是让人觉得值-express((是一个函数吗?这里到底发生了什么。

在代码行中:

const app = express();

CCD_ 1是一个函数。如果你做typeof express,它会告诉你这是一个函数。

当您调用该函数时,它会返回一个新创建的对象,因此它是一个类似于"的函数;工厂功能";。它有点像构造函数,但对象的创建包含在函数中,而不是使用new。该函数创建新对象,初始化并返回

可能让您感到困惑的是,express还具有以下属性:

express.static(...)
express.json(...)

在Javascript中,函数也是一个对象(可以认为函数是从对象派生的(,并且可以包含属性。因此,虽然express是一个工厂函数,但它也可以具有可以独立使用的属性。

在这种情况下,express是一个对象,而不是一个函数,对吗?

是与否,express是一个函数。函数从object派生而来,也可以具有属性。所以,在某种程度上,你可以说它既是一个函数又是一个对象,你可以把它用作其中之一。在面向对象的术语中,对象是基类,函数是派生类,因此函数同时具有函数和对象的功能。

这一行使变量"app"可以访问许多重要的方法,如"listen"one_answers"get"。

const app = express();创建一个应用程序对象,该对象有自己的方法,如app.get()express0,允许您注册路由处理程序。而且,像app.listen()这样的方法允许您启动服务器。app对象上有许多方法。

但是这里的语法不是让人觉得值-express((是一个函数吗?

是的,它是一个函数。而且,Javascript中的函数也可以具有属性。

好问题,

我们有这个:

const express = require("express"),
const app = express()

"express常量仍然用于与配置应用程序相关的一些express.js工具。应用程序主要用于为应用程序的数据移动和用户交互创建的任何内容">

参考资料:Jonathan Wexler。使用Node.js进行编程(Kindle位置2619-2621(。曼宁出版物。

据我所知,constexpress是express模块所需的方法。

const express = require("express")

然后使用express((方法实例化一个名为"的web服务器;const-app";

const app = express()

因此const应用程序实际上是一个由express.js开发人员创建的web服务器对象,他们抽象了两个主要的核心功能:

  1. Web服务器的路由映射。即注册what(req,res(=>{}回调函数用于调用哪些路由。因此,当您的浏览器发出请求(用req.method和req.url标识(时express调用使用app.get((app.post((方法预先注册的正确回调
  2. http.createServer(<handle_function>(开关是实际创建web服务器的部分,并使用其映射(请参见1(来执行通过app.get((和app.post((预定义的正确handle_function。handle_function负责处理来自浏览器的请求,并使用req.url和req.method来确定要在其映射中使用的回调(再次参见1以完成整圈。(

因此,应用程序是一个对象,使开发人员不必担心使用适当的句柄回调映射浏览器请求,也不必创建Web服务器。

此外,你还可以使用一系列新的应用程序方法,让你可以用你的应用程序做不同的事情。在定义请求和响应时,您还会得到一堆方法。类似res.send((

例如浏览器执行";获取";至"/关于";并且应用程序正在侦听并接收请求(在应用程序对象中抽象(然后执行回调(也许要感谢app.listen((方法??(基于它的抽象地图

希望是有道理的。

最新更新