实例化快递

时间:2017-03-15 02:18:26

标签: node.js express

我有一个问题,我需要像这样加载表达式:

var express = require('express');
var app = express();

为了让.static工作:

app.use(express.static(__dirname+'views'));

任何我不能使用速记的原因:

var app = require('express')();

当我尝试使用简写时,表示express.static未定义且我的脚本无法运行。这只是快递不支持的功能吗?

2 个答案:

答案 0 :(得分:2)

  

我无法使用速记的任何理由:

     

var app = require(' express')();

如果您从脚本中考虑过此声明,

app.use(express.static(__dirname+'views'));

您正在使用快递的static方法。要使用此方法,您必须先导入express并将其存储在某些变量中,例如您执行

var express = require('express');
  

来自express#express.js

exports.static = require('serve-static');
     

static在班级定义。

然后实例化它 像这样

var app = express();

获取对象级别(prototype)方法和属性的访问权限 app#use app#engine等。

来自express#application //line no 78

编辑:

  

但是为什么我不能使用app.static var app = require(' express'););

正如我所说,.static是类级方法,而不是实例/对象(原型)级别。

所以,var app = require('express')() 你会得到没有 app.static 方法的快速实例/对象(原型)。所以,你不能使用。

了解更多javascript-class-method-vs-class-prototype-method

答案 1 :(得分:1)

这将有效:const app = (() => require('express'))()();

但是你仍然需要express本身,所以实际上并不需要两次。