Прямо сейчас я разрабатываю довольно огромный и сложный webapp и должен иметь дело с огромным количеством кода js на стороне клиента и облегчить мою жизнь. Я пытаюсь как можно больше отделить этот код как я могу.Разбор слишком сложных модулей javascript
Я был очень вдохновлен Николасом Закасом (http://www.youtube.com/watch?v=vXjVFPosQHw) и Адди Османи (http://addyosmani.com/largescalejavascript), рассказывая о масштабируемой архитектуре js и пытался применить некоторые свои идеи к моей работе.
Я отделенное все мой код через многократный независимых модули и обрабатывать все взаимосвязи с каким-то посредника. В большинстве случаев этот подход работал отлично. Но есть случаи, когда я думаю его недостаточно.
Один из модулей, над которыми я работаю, представляет собой довольно сложную структуру списка. Вот некоторые упрощенный пример:
Помимо некоторого рендеринга логики, модуль, отвечающий за эту часть страницы должны обращаться:
- пагинация
- поворотных групп
- движущиеся elems и группы вокруг с dnd
- резка/копирование/склеивание элементов и групп
- освежающего certaing группа/elems
- некоторая логика в elems
- может быть больше вещей в ближайшем будущем
Я провел весь неродственный логик, что я мог бы (например, редактирование и удаление логики осуществляю к другому модулю через события), но размер модуля по-прежнему большой (более 1 тыс. строк кода), и я не знаю, как уменьшить его. Более того, я использую шаблон модуля для своих модулей, поэтому еще сложнее разделить логику между несколькими файлами.
Итак, я пришел сюда, чтобы спросить, есть ли способ отделить сложную логику в рамках одного модуля?
UPDATE:
Я хочу уточнить кое-что. Я прекрасно понимаю, как я могу отделить модули («модуль» от шаблона модуля) через несколько файлов в моем коде.
Но то, что я действительно искал является нового логического способом отделить проблемы в рамках одного модуля («модуля» из НКЗ презентации).
вы сомневаетесь, но в целом вы можете рассматривать модуль как программу, а внутри стен модуля вы можете создавать подмодули, классы, типы и чистые функции, чтобы помочь уменьшить беспорядок. автономные модули, как правило, относительно дороги из-за сокращения внутренней рециркуляции процедур; ex: автономный сортировщик списков по сравнению с плагином jQuery. Модули лучше, чем беспорядок, поэтому вы на правильном пути. Возможно, для освоения понятий «Инъекция зависимостей» и «Инверсия управления» необходимо перейти на следующий уровень. – dandavis
Люди, интересующиеся этой темой, могут захотеть проверить [t3] (http://t3js.org/), систему JS, недавно выпущенную самим Николасом Закасом и его командой в Box, которая проистекает непосредственно из концепций, изложенных в презентации связанный в вопросе. [Здесь] (https://www.box.com/blog/introducing-t3-enabling-large-scale-javascript-applications/) сообщение в блоге от Zakas, представляющее его. – Nobita
Привет, это немного поздно, но может быть полезно как-то. https://pogsdotnet.blogspot.sg/2017/07/modular-javascript-architecture.html –