Этот вопрос закрыт для ответов, так как повторяет вопрос Когда использовать классы, а когда функции?
@virtualhero

Разработка приложений на JavaScript: ES6 классы или модули?

Что предпочтительней использовать для создания api при разработке приложения, ES6 классы или же модули?
К примеру если использовать ES6 класс:
class ClassName {
    constructor() {}
    // Methods...
}

то будут доступны все свойства и методы объекта, что само по себе исключает нормальный api.

Если использовать модули:
var ModuleName = (function() {
    // Private
    return {
        // Public...
    };
})();


Здесь уже можно создать нормальный api, но менее удобно как по мне.

Что посоветуете мне выбрать?
  • Вопрос задан
  • 652 просмотра
Решения вопроса 2
Negwereth
@Negwereth
lvivcss.com.ua
В ES6 файл сам по себе является модулем. Для этого и есть default и обычный export. Классы же лучше использовать для описания сущностей, когда нужно наследование и тп.

То есть, если вы в коде используете экземпляры сущностей, созданных на основе данных из API, эти сущности знают о других сущностях, имеют иерархические отношения, должны уметь получать смежные данные - тогда выбор за классами. И то, там ещё надо разбивать на обычные методы и на статические.

А если просто получать какие-то списки, то обычных ES6 модулей хватает за голову. Но акцентирую - ES6 модулей, а не та древняя реализация revealing module из вашего примера.
Ответ написан
KorniloFF
@KorniloFF Куратор тега JavaScript
Работаю по font-end / JS
Есть еще вариант: использовать стандартные JS-объекты.
objName= {
__proto__: parentObjName,
metod: function() {...},
param: value
}

Таким образом все методы и параметры, задаваемые в литерале, будут перечисляемыми и изменяемыми. Но есть еще, для создания API, хороший способ добавления свойств / методов такому объекту как неперечисляемых, так и не изменяемых:.

Object.defineProperty (objName, 'nameProp', {
value: "enumVal"
})
Ответ написан
Ответы на вопрос 1
nazarpc
@nazarpc
Open Source enthusiast
Это не противоречивые вещи, и то, что вы написали не ES2015 модуль.
Очень даже можно использовать классы вместе с модулями.
Ответ написан
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы