不同的需要NodeJS中的模块方式

时间:2016-05-26 14:47:02

标签: javascript node.js require

我在nodeJS上使用请求模块时非常困惑。我不能理解以下关于需要这个模块的许多方式的基础。

这个snipet是正确的但是,为什么要以这种方式?

var express = require('express'),
    app = express(),
    router = express.Router(),
    assert = require('assert'),
    MongoClient = require('mongodb').MongoClient;

例如,assert也有方法和express,那么,为什么它不能直接在app变量中声明?

var app = require('express'); // like assert = require('assert')

...关于MongoClient,我不能以router声明的方式做同样的事情吗?

var mongo = require('mongodb'),
    MongoClient = mongo.MongoClient();

1 个答案:

答案 0 :(得分:2)

对于您的第一个示例,请注意 Monitor monitor= PowerMock.createMock(Monitor.class); PowerMock.expectNew(Monitor.class, <hostcode parameter>).andReturn(monitor).once(); PowerMock.replayAll(monitor); PowerMock.verify(monitor); app = express()完全不同。前者分配调用函数的结果,而后者相当于你的建议不会起作用。如果你真的喜欢重复,你可以做以下事情,但是你没有引用app = express模块:

express

对于你的第二个例子,你再次混淆了一个函数的赋值与函数调用结果的赋值。一个正确的(但有一个不必要的额外线)替代方案是:

var app = require('express')(),
    router = require('express').Router()

简而言之,只有一种方法需要一个模块 - var mongo = require('mongodb'), MongoClient = mongo.MongoClient - 其他一切都与模块系统无关。