Как разделить кодовую базу JavaScript на модули? - PullRequest
1 голос
/ 02 апреля 2012

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

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

В частности:

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

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

  • или их смесь?

Ответы [ 2 ]

3 голосов
/ 02 апреля 2012

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

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

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

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

Удачи.

1 голос
/ 03 апреля 2012

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

...