Гибкость для вас, как правило, гибкость для них. Все эти лучшие практики, которым вы руководствуетесь, выигрывают с обеих сторон приложения.
Однако один критический и часто упускаемый момент - это написание надежного пользовательского интерфейса. Слишком много компонентов пользовательского интерфейса слишком привязаны к одному контексту или чрезмерно требовательному набору HTML, и у них CSS настроен на неудачу.
Например, если у вас есть раскрывающийся список, JS гораздо меньше работает, чтобы привязать перетаскиваемый компонент с абсолютным позиционированием в контейнере с относительным набором (без координат), чем вытащить молот JQuery и получить координаты для его наведения. над элементом и просто вставьте его на место. Это также намного менее вероятно, чтобы сломаться в случаях, когда страница сдвигается или какая-то новая функция браузера выбрасывает информацию о позиционировании. Чем больше вы полагаетесь на навыки HTML / CSS, чтобы избежать работы JS, тем более надежным будет ваш пользовательский интерфейс.
Как правило, я стараюсь убедиться, что единственная вещь, в которой нуждаются мои компоненты пользовательского интерфейса, - это тег HTML, чтобы жить с соответствующим идентификатором или классом. Чем больше вещей вы можете сделать с этим контейнером без разрыва пользовательского интерфейса или с фактически размещенным контейнером, таким как расширение / сжатие, чтобы соответствовать при изменении размеров контейнера, тем больше он может быть легко реализован в любой части приложения без необходимости на стороне клиента. эксперт. Все, что им нужно сделать, это прикрепить класс к нему.
Предпочитайте делегирование событий в контейнерах пользовательского интерфейса назначению слушателей непосредственно узлам конечной точки, таким как кнопки. Этот компонент пользовательского интерфейса теперь может работать со статическим HTML, но вы никогда не знаете, когда кто-то захочет иметь возможность извлечь и переписать HTML-код внутри с помощью innerHTML или чего-то еще. Если контейнер не поврежден и все события делегированы (см. Метод jquery 'on'), вам не нужно об этом беспокоиться, и они могут никогда не научиться трудному способу, которым замена HTML нарушает работу слушателей.
В целях сохранения делегирования в качестве опции не используйте где-либо stopPropagate, а только узлы конечных точек и отправляйте нежелательные письма разработчикам идиотских фреймворков, которые рассылают спам повсюду.
Что касается макета, сохраняйте HTML минимальным, семантическим и избегайте div-оболочек. Чем меньше HTML, тем проще проблемы с версткой для диагностики новичков.
Используйте понятные имена классов для утилиты CSS. Класс row может быть более понятным для нубов CSS, чем clearfix.
Всегда дайте уникальные элементы сечения, уникальные идентификаторы. С его помощью намного легче определить, где происходит материал, специфичный для раздела, легче переопределить материал, а также это может стать удобочитаемостью и производительностью, которую выиграет JS.
Очевидно, это плохая новость - излишне злоупотреблять схемой классов, но чем больше серверного разработчика может установить, просто добавив нужные классы, тем легче будет им внести изменения в существующую страницу.
И, конечно, в начале проекта заставьте их договориться, по крайней мере, об одном: задний и внешний интерфейс соединяются только через HTML и JSON. Не позволяйте им использовать вещи, которые "пишут JavaScript для вас!" Это кровавый беспорядок и кошмар обслуживания.
Как и все вещи, связанные с развитием, предпочитают СУХОЙ и минимализм