【问题标题】:mean.js uses require without varmean.js 使用没有 var 的 require
【发布时间】:2015-04-09 02:50:45
【问题描述】:

对 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 mean meanjs


    【解决方案1】:

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

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

    2. 声明给定模型的架构

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

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

    var articles = Article.query();
    

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

    一般来说,记住;并不是所有的函数都会返回一些东西。

    【讨论】:

    • 好的。你的解释让我明白了一点。
    • 另外一个问题。代码mongoose.model('Article', ArticleSchema);在哪里注册对象“文章”?看来我现在可以使用“Article.query();”来调用它。它是作为某种全局对象加载的吗?
    • 从现在开始你不能只使用“文章”,它必须包含在每个使用它的文件的顶部。例如,在articles.server.controller.js 中,前几行中的某处有var Article = mongoose.model('Article');
    猜你喜欢
    • 2019-07-17
    • 2020-05-31
    • 1970-01-01
    • 2019-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-28
    • 1970-01-01
    相关资源
    最近更新 更多