Ghost中的东西不明白,exports.init = function init(){}会在需要时自动调用

时间:2016-07-30 12:19:12

标签: node.js

Ghost模块models的index.js:

/**
 * Dependencies
 */

var _ = require('lodash'),

    exports,
    models;

/**
 * Expose all models
 */

exports = module.exports;

models = [
    'accesstoken',
    'app-field',
    'app-setting',
    'app',
    'client-trusted-domain',
    'client',
    'permission',
    'post',
    'refreshtoken',
    'role',
    'settings',
    'subscriber',
    'tag',
    'user'
];

function init() {
    exports.Base = require('./base');

    models.forEach(function (name) {
        _.extend(exports, require('./' + name));
    });
}

/**
 * Expose `init`
 */

exports.init = init;

当需要此代码时,不会调用init方法。可以使用以init方法导出的所有内容。

以下是它的使用方法:

dataProvider    = require('../models')

然后

dataProvider.Post.findPage(options)

未调用导出的init方法,为什么???

1 个答案:

答案 0 :(得分:1)

core/server/models/index.js按预期导出一个函数init 在服务器上启动core/server/index.js定义models = require('./models')并在第68行调用models.init();。因此,init没有魔力:(

P.S。幽灵是here