Чем является модуль в js?

Рейтинг: 1Ответов: 1Опубликовано: 30.10.2014

Сегодня целый день я наблюдал наплыв разговоров о "модуле" в js.
Много всего было услышано, но что такое конкретно модуль, я так и не понял.
Раньше, когда я слышал слово модуль, я представлял некий продукт, законченный продукт, который имеет только одну точку входа, предоставляя api. Если ещё более развернуто, есть модуль "СделатьИзФотоРисунокМаслом", который имеет один public метод:

function photoInPicture( photo ){ return picture; }

И что происходит в этом модуле снаружи, не известно. При этом в нем, в private, реализовано не одно поведение, а несколько. А если ещё более подробно, то

var module = ( function( ){
    // а вот здесь происходит фиерия из 
    // приватных объектов, типа

    function ParsePixel( ){

    }

    ParsePixel.prototype = {
        constructor: ParsePixel,
        parse: function( foto ){
            var newFoto;
            // ...
            // ...
            return newFoto;
        }
    };

    function Effect( ){

    }

    Effect.prototype = {
        constructor: Effect,
        addEffect: function( foto ){
            var picture;
            // ...
            // ...
            return picture;
        }
    }

    var parsePixel = new ParsePixel( );
    var effect = new Effect( );

    var someFoo = function( foto ){
        return effect.addEffect( parsePixel.parse( foto ) );
    };

    return {
        fotoToPicture: function( foto ){
            return someFoo( foto );
        }
    };

}( ) );

Или же модуль - это реализация только одного поведения, как, например, ParsePixel = один модуль, Effect = другой модуль?

Ответы

▲ 2Принят

У вас какая-то каша с понятием модуля в JS, а ведь на эту тему уйма статей:

Если очень просто, то модуль — это контейнер, который наружу отдает только определенные публичные методы, свойства, константы и/или классы, отвечающие за определенный тип задачи, всё.