@exports

描述: 标识一个由JavaScript模块导出的成员。

Syntax(语法)

@exports <moduleName>

在JSDoc3.3.0或更高版本中,<moduleName>可以包含module: 前缀。在以前的版本中,你必须忽略此前缀。

Overview(概述)

@exports标签描述由JavaScript模块的exportsmodule.exports属性导出的任何内容。

Examples(例子)

在模块中,当您使用特定的exports模块,@exports标签是不需要。JSDoc会自动识别出该对象的导出成员。同样,JSDoc会自动识别中的Node.js模块特定的module.exports属性。

例如,CommonJS模块:

/**
 * A module that says hello!
 * @module hello/world
 */

/** Say hello. */
exports.sayHello = function() {
    return 'Hello world';
};

例如,Node.js模块:

/**
 * A module that shouts hello!
 * @module hello/world
 */

/** SAY HELLO. */
module.exports = function() {
    return "HELLO WORLD";
};

例如,AMD模块导出一个字面量对象:

define(function() {

    /**
     * A module that whispers hello!
     * @module hello/world
     */
    var exports = {};

    /** say hello. */
    exports.sayHello = function() {
        return 'hello world';
    };

    return exports;
});

例如,AMD模块导出一个构造函数:

define(function() {
    /**
     * A module that creates greeters.
     * @module greeter
     */

    /**
     * @constructor
     * @param {string} subject - The subject to greet.
     */
    var exports = function(subject) {
        this.subject = subject || 'world';
    };

    /** Say hello to the subject. */
    exports.prototype.sayHello = function() {
        return 'Hello ' + this.subject;
    };

    return exports;
});

如果你的模块导出使用的是exportsmodule.exports之外的其他方法,使用@exports标签来说明哪些成员用于导出。

例如:AMD模块导出一个对象:

define(function () {

    /**
     * A module that says hello!
     * @exports hello/world
     */
    var ns = {};

    /** Say hello. */
    ns.sayHello = function() {
        return 'Hello world';
    };

    return ns;
});