入口文件里面require(‘./models’);是什么情况?
发布于 5 年前 作者 elevensky 4064 次浏览 最后一次编辑是 4 年前 来自 问答

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 回复

我以为是为了控制每个模块初始化顺序。。

回到顶部