Какого стиля лучше придерживаться в проектах на JS (ООП или ФП) и насколько сам JS соответствует той или иной парадигме ?

Вот я так и не могу понять как лучше организовать проект на JS, как набор функций бесконечно вызывающие друг друга, или как набор объектов (я понимаю что в js функция это объект и надеюсь вы тоже поняли, что я имею ввиду :)) ). И какие общие методики можно использовать для организации кода. Цели: легкость и быстрота реализации проекта, а также минимальные затраты на поддержку и масштабирование.

1 симпатия

Эт так просто для примера

Стратегия следующая.

Первый и главный момент - разделяй код по неймспейсам через import/export. Для этого пиши код в модулях и собрай проект тулзой типа parcel-bundler (рекомендую начинающим) или webpack (с ним придется потратить много времени для изучения и настройки).

Еще одно преимущество такого подхода - возможность подключить через require любой из доступныхnpm модулей.

Когда твой код размещен по модулям, получается что явно проведена черта между деталями реализации и публичными функциями - инкапсуляция.

Второй вопрос уже более относится к теме топика: что экспортировать из модулей - функции или объекты.

На практике начинать проектировать систему с объектов не всегда удобно. Я стараюсь обойтись на первых этапах только функциями. Никто не мешает держать состояние в области видимости модуля, не создавая для этого класса. Разумеется это работает только для случая когда инстанс класса единственнен.

const fs = require('fs') // стандартный модуль работы с файловой системой
let cache = {}
exports.getCached = function (path) {
	if (!cache[path]) {
		cache[path] = fs.readFileSync(path, 'utf-8')
	}
	return cach[path]
}

Вот тут хороший пример когда поект реализован без привлечения классов: я развел зависимости по модулям


Задача проекта - вытянуть список праздников, распарся сайт.

А тут хороший пример когда модули экспортируют классы. Предметную область было проще описать классами и их отношениями


Задача проекта - сэмулировать поведение поставщика цен, шля апдейты цен валютных пар по вебсокетам.

1 симпатия