mean.js使用require而不使用var

时间:2015-02-09 11:19:19

标签: express mean meanjs

对于来自yeoman的默认meanjs应用程序有疑问。

在express.js文件中,它有一个如下语句:

// Globbing model files
config.getGlobbedFiles('./app/models/**/*.js').forEach(function(modelPath) {
    require(path.resolve(modelPath));
});

现在我明白它会在路径“./app/models/”中获取所有.js文件,但我想要了解的是单独站立

require(path.resolve(modelPath));

如果没有将require函数设置为“var”,如何使用require函数?

其中一个包含文件的示例如下:

'use strict';

/**
 * Module dependencies.
 */
var mongoose = require('mongoose'),
    Schema = mongoose.Schema;

/**
 * Article Schema
 */
var ArticleSchema = new Schema({
    created: {
        type: Date,
        default: Date.now
    },
    title: {
        type: String,
        default: '',
        trim: true,
        required: 'Title cannot be blank'
    },

    content: {
        type: String,
        default: '',
        trim: true
    },
    user: {
        type: Schema.ObjectId,
        ref: 'User'
    }
});

mongoose.model('Article', ArticleSchema);

此文件不会公开任何内容。

那么为什么需要用“var”调用require而没有暴露函数的内容?

这将如何允许以后使用内容?

1 个答案:

答案 0 :(得分:1)

express.js文件中的代码执行模型文件的内容。 MEAN.js模型文件的解剖结构如下:

  1. 加载mongoose和schema包以及所有包含的包 模型(如果有的话)。

  2. 声明给定模型的架构

  3. 在模型名称下注册给定的模式(给定示例的文章)。

  4. 没有任何东西可以返回,因此在express.js文件中缺少任何变量赋值。从现在开始,您可以按照第三部分中指定的标签调用模型。因此,在你的控制器中,你会写一些像;

    var articles = Article.query();
    

    这行代码会加载Article模式并在后端运行提供的query()方法(默认情况下会返回该模型下数据库中的所有实例)。

    总的来说,记住;并非所有功能都会返回。