Как разделить кодовую базу JavaScript на модули?

JavaScript в моем веб-приложении превратился в один огромный файл. Я хочу разбить его на модули, чтобы им было легче управлять.

Я не знаю, существуют ли какие-либо устоявшиеся передовые методы анатомирования кодовой базы веб-приложения, или они просто слишком сильно различаются от проекта к проекту?

Особенно:

  • должен ли каждый модуль отвечать за концепцию всего приложения, такую ​​как «макет», «хранилище на стороне клиента» и т. д.?

  • или модули должны быть для концепций, специфичных для создаваемого приложения (например, «комментарии» или «календарь»), и каждый модуль должен отвечать за управление своим собственным макетом, собственным хранилищем на стороне клиента и т. д.?

  • или смесь того и другого?


person callum    schedule 02.04.2012    source источник


Ответы (2)


Если вы возьмете разделение проблем и Single Responsibility, то каждый модуль / компонент и т. д. должен нести ответственность за то, что он делает, и ничего больше. Разбейте модули на небольшие, простые в управлении части, которые выполняют свою работу и ничего больше.

Что касается вашего JS-приложения, вы можете взглянуть на некоторые клиентские фреймворки MVC (такие как knockout, sproutcore, spine и т. Д. И т. Д.), Эти фреймворки помогают логически разделить представления и макеты на контроллеры и модели. Вам также может быть интересно использовать что-то вроде require.js для загрузки ваших модулей по мере необходимости.

Есть очень хорошая книга Алекса Маккоу, которую стоит прочитать.

MVC - это всего лишь один из шаблонов, но он очень популярный и решает некоторые из ваших проблем.

Удачи.

person mbx-mbx    schedule 02.04.2012

При прочих равных, вам лучше создавать свои модули вокруг концепций, специфичных для приложения. Он более объектно-ориентирован и имеет тенденцию группировать код, который с большей вероятностью будет изменяться вместе. Это, в свою очередь, упрощает понимание кода, делает его более терпимым к изменениям, упрощает разработку и расширение (преимущества «модульности»).

person Chris Chedgey - Structure101    schedule 03.04.2012