模块导出多个类

时间:2016-01-19 00:47:53

标签: javascript node.js

这是/cars/ford.js

                   Ford = Car.extend({
                    classId: 'Ford',

                    init: function (driver) {
                        this._driver = driver;
                        Car.prototype.init.call(this);


                    tick: function (ctx) {
                        Car.prototype.tick.call(this, ctx);
                    },

                    destroy: function () {
                        if (this._driver !== undefined) {
                            this._driver._license.pull(this);
                        }
                        Car.prototype.destroy.call(this);
                    }
                });

if (typeof(module) !== 'undefined' && typeof(module.exports) !== 'undefined') {
                module.exports = Ford;
            }

这是/cars/knightrider.js:

                   KITT = Car.extend({
                    classId: 'KITT',

                    init: function () {
                    Car.prototype.init.call(this);
                    var self = this;
                    },


newDirection: function () {
    var self = this;

    this._move.direction()
        .duration(Math.random())
        .properties({
            x: Math.random(),
            y: Math.random(),
        })
        .voice('robotic')
        .afterDirection(function () {
            self.newDirection();
        })
        .start();


}
                });

if (typeof(module) !== 'undefined' && typeof(module.exports) !== 'undefined') {
                module.exports = KITT;
            }

我希望将所有汽车放在同一档案中,以保持我的自我健康。如何在不改变课程的情况下包装它们?随意推荐任何适当的包装'对于Javascript函数书或教程,因为我真的不喜欢打开文件。当我编辑汽车时,我可能想要编辑其他汽车。

希望我能做到:

        module.exports.Allmycars = KITT, Ford;

然后用:

打电话给他们
        Allmycars.Ford

1 个答案:

答案 0 :(得分:1)

解决方案可能是:

//cars/index.js

module.exports = {
  KITT:require("./knightrider"),
  Ford:require("./ford")
}

//所以你可以使用:

var allMyCars = require("./cars");
var ford = new allMyCars.Ford();