入口文件里面require(‘./models’);是什么情况?
nodeclub源码 app.js入口文件
/*!
* nodeclub - app.js
*/
/**
* Module dependencies.
*/
var config = require('./config');
if (!config.debug) {
require('newrelic');
}
var path = require('path');
var Loader = require('loader');
var express = require('express');
var session = require('express-session');
var passport = require('passport');
**require('./models');**
直接require(’./models’);这个包之后,没有像其他require一样赋值给变量,但包里面也exports了里面的数据到外面。 models文件夹下的index.js主模块
require('./user');
require('./topic');
require('./reply');
require('./topic_collect');
require('./message');
exports.User = mongoose.model('User');
exports.Topic = mongoose.model('Topic');
exports.Reply = mongoose.model('Reply');
exports.TopicCollect = mongoose.model('TopicCollect');
exports.Message = mongoose.model('Message');
上面这段代码仅仅是预留的exports导出对么? 主要是执行
require('./user');
require('./topic');
require('./reply');
require('./topic_collect');
require('./message');
将上面这段代码加载执行,定义好model(‘User’)这5个model,以便下面的模块中require(‘mongoose’)后使用。 ##刚开始的错误理解## 我的理解是加载之后,require(’./models’)自动挂载到当前入口脚本的module.exports下,直接作为调用模块(app.js)exports下属性:
exports.User
exports.Topic
exports.Reply
exports.TopicCollect
exports.Message
后续代码可以直接使用,不需要显式赋值也可以。
1 回复
我以为是为了控制每个模块初始化顺序。。