【问题标题】:why do we use 'app' variable to call the express function为什么我们使用 'app' 变量来调用 express 函数
【发布时间】:2018-01-15 16:45:40
【问题描述】:

我的问题是:为什么我们只使用变量名“app”来存储函数 express 的返回,而为什么不使用其他变量? express 是 node 中的一个模块,怎么可能是一个函数呢?请帮助我,因为我是 node.js 的新手!以下代码是一个非常基本的路由示例。

var express = require('express')

var app = express()

// respond with "hello world" when a GET request is made to the homepage

app.get('/', function (req, res) {
  res.send('hello world')
}

【问题讨论】:

  • 您应该阅读或观看 Javascript 和 NodeJS 的教程。这是非常基本的问题,在那里得到的回答比这里更好。
  • 为什么我们不通过 express.get() 而不是 app.get() 来访问 get 方法?
  • 要使用express,您需要创建一个 express 库的实例。你可以通过调用express() 来做到这一点,它会返回一个流行约定名称为app 的对象,但你可以随意命名它。请注意,在同一段代码中可能有多个服务器,每个服务器都是它们自己的 express 实例(app1、app2、app3 等)。同时听 http 和 https 的人经常这样做。所以在调用.get() 之前,你需要一个 express 对象的实例。

标签: node.js express


【解决方案1】:

要使用 express 库,您需要创建 express 库的实例。你可以通过调用express() 来做到这一点,它会返回一个流行约定名称为app 的对象,但你可以随意命名它。

const express = require('express');     // load express library
const app = express();                  // call express factory to create
                                        // an instance of the express library

您可以将变量命名为 app 任何您想要的名称。 app 这个名字是流行的惯例,但你也可以很容易地做到这一点:

const express = require('express');
const myApp = express();

myApp.get('/', ...);

注意,express 要求您创建实例的原因之一是在同一段代码中可能有多个服务器,每个服务器都是它们自己的 express 实例(app1、app2、app3 等。 .)。如果它不要求您以某种方式创建实例并且仅对所有状态使用模块级状态,那么每个 node.js 进程只能有一个服务器,这比需要的限制更多。

同时收听 http 和 https 的人通常在同一个应用程序中拥有两台服务器。或者您可以在一个端口上提供网页并在另一个端口上提供 API。因此 Express 库的设计者对其进行了设计,因此您需要一个 express 对象的实例,然后才能对其调用 .get()(从而允许一个具有多个且完全独立的实例),并且 express 库提供了一个工厂函数 @ 987654329@你可以调用来创建那个实例。

【讨论】:

    【解决方案2】:

    您选择的变量名称是任意的。 app 按惯例选择。

    在节点中,您可以从模块中导出函数。例如:

    test_mod.js

    function test() {
       console.log("Testing")
    }
    
    module.exports = test
    

    test.js

    var t = require('./test_mod')
    t()
    

    【讨论】:

    • 为什么我们不通过 express.get() 而不是 app.get() 来访问 get 方法?
    【解决方案3】:

    你可以做任何事情而不是一个应用程序,我们称之为应用程序,因为在 node.js 应用程序中,我们为不同的目的创建不同的应用程序。 详情请看这里,这很有帮助:https://stackoverflow.com/a/27599657/9211830

    另外我建议你看一些 Node.js 和 Express 的教程。

    【讨论】:

      【解决方案4】:

      App 被定义为变量类型,如 express 类的对象或实例,我们可以使用它的另一个变量名,route = express()

      【讨论】:

        猜你喜欢
        • 2017-06-05
        • 2011-10-17
        • 2012-01-26
        • 2020-12-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-02
        • 1970-01-01
        相关资源
        最近更新 更多