NodeJS中模块的不同需求方式
Different require ways of modules in NodeJS
我对在 nodeJS 上使用请求模块感到很困惑。我无法理解以下关于需要此模块的多种方式的基础。
这个片段是正确的,但是,为什么要这样呢?
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();
对于第一个示例,请注意 app = express()
与 app = express
完全不同。前者赋值调用函数的结果,后者相当于你的建议行不通。如果您真的喜欢重复,您可以执行以下操作,但这样您将不会引用 express
模块:
var app = require('express')(),
router = require('express').Router()
对于您的第二个示例,您再次将函数赋值与函数调用结果赋值混淆了。一个正确的(但有一个不必要的额外行)替代方案是:
var mongo = require('mongodb'),
MongoClient = mongo.MongoClient
简而言之,只有一种方法可以要求模块 - require('nameOrPath')
- 其他一切都与模块系统无关。
我对在 nodeJS 上使用请求模块感到很困惑。我无法理解以下关于需要此模块的多种方式的基础。
这个片段是正确的,但是,为什么要这样呢?
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();
对于第一个示例,请注意 app = express()
与 app = express
完全不同。前者赋值调用函数的结果,后者相当于你的建议行不通。如果您真的喜欢重复,您可以执行以下操作,但这样您将不会引用 express
模块:
var app = require('express')(),
router = require('express').Router()
对于您的第二个示例,您再次将函数赋值与函数调用结果赋值混淆了。一个正确的(但有一个不必要的额外行)替代方案是:
var mongo = require('mongodb'),
MongoClient = mongo.MongoClient
简而言之,只有一种方法可以要求模块 - require('nameOrPath')
- 其他一切都与模块系统无关。