mean.js 使用 require 而不使用 var

mean.js uses require without var

对 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));

如何在未将其设置为 "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 而没有公开函数的内容?

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

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

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

  2. 声明给定模型的架构

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

return 没有任何内容,因此 express.js 文件中缺少任何变量赋值。从现在开始,您可以通过您在第三部分中分配的标签来调用模型。因此,在您的控制器中,您可以编写类似;

var articles = Article.query();

这行代码将加载 Article 架构和 运行 后端提供的 query() 方法(默认情况下 return 是数据库中的所有实例模型)。

总的来说,记住;并非所有功能 return 东西。