Javascript 这两种要求有什么区别?
What is the difference between these two kind of requiring in Javascript?
在教程中我看到了这样一段代码:
var session = require('express-session');
var FileStore = require('session-file-store')(session);
还有一个这样的代码:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
但我想我可以这样写第一个代码:
var sessionFileStore = require('session-file-store');
var FileStore = sessionFileStore.session;
第二个像:
var Schema = require('mongoose')(Schema);
或
var Schema = require('mongoose').Schema;
我只是想问一下,这两种写法是一样的还是有一些区别?
我也想知道 meaning/difference 是什么,如果我对第二个命令使用类似下面的内容:
var Schema = require('mongoose')('Schema');
是一样的。 require
是一个普通函数,其中returns一个值。因此,如果该值也是一个函数,您可以立即调用它,或者如果它是一个对象,则可以使用它的属性之一。
但是,在第二种情况下,require('mongoose')(Schema)
会导致两个错误:
- 这里
require
returns一个对象,不是一个函数,所以你不能调用它。
- 您正在使用尚未定义的变量
Schema
,并将其作为参数传递给函数。
第二种情况,正确的单行写法是var Schema = require('mongoose').Schema;
在第一种情况下,我认为正确的方法是 var FileStore = sessionFileStore(session);
我在这里假设 session
是一个全局变量,或者之前已经定义了。
在教程中我看到了这样一段代码:
var session = require('express-session');
var FileStore = require('session-file-store')(session);
还有一个这样的代码:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
但我想我可以这样写第一个代码:
var sessionFileStore = require('session-file-store');
var FileStore = sessionFileStore.session;
第二个像:
var Schema = require('mongoose')(Schema);
或
var Schema = require('mongoose').Schema;
我只是想问一下,这两种写法是一样的还是有一些区别?
我也想知道 meaning/difference 是什么,如果我对第二个命令使用类似下面的内容:
var Schema = require('mongoose')('Schema');
是一样的。 require
是一个普通函数,其中returns一个值。因此,如果该值也是一个函数,您可以立即调用它,或者如果它是一个对象,则可以使用它的属性之一。
但是,在第二种情况下,require('mongoose')(Schema)
会导致两个错误:
- 这里
require
returns一个对象,不是一个函数,所以你不能调用它。 - 您正在使用尚未定义的变量
Schema
,并将其作为参数传递给函数。
第二种情况,正确的单行写法是var Schema = require('mongoose').Schema;
在第一种情况下,我认为正确的方法是 var FileStore = sessionFileStore(session);
我在这里假设 session
是一个全局变量,或者之前已经定义了。