Подтвердить что ты не робот

Неправильная ли практика возвращать частичные представления, содержащие javascript?

Я реализую базу данных клиентов, которая позволяет мне искать пользователей и компании, просматривать и редактировать их данные и многое другое с помощью ASP.NET MVC и javascript (jQuery).

Всякий раз, когда появляется сообщение или происходит, я делаю это через jQuery.load и вставляю PartialView в DOM.

Некоторые частичные представления включают формы. Я хочу, чтобы они также были формами ajax, поэтому эти частичные просмотры имеют обработчики document.ready, которые превращают формы в формы ajax (через jquery.form).

В начале я обрабатывал это в обратном вызове/коде, который вставляет частичный вид в DOM. Однако это привело к тому, что один большой script содержащий множество функций javascript, которые ссылаются на разные страницы. Я переработал большой javascript, вставив скрипты на соответствующие страницы.

Теперь код более гладкий (у меня гораздо меньше обработчиков OnXXXPartialView), а код - аккуратно внутри частичного представления, к которому он принадлежит. Большинство из этих файлов содержат только 3-4 строки кода javascript, поэтому накладные расходы не очень значительны.

Так эффективно я не только добавляю элементы в документ DOM, но иногда я также добавляю кусок javascript. На практике это отлично работает, но кажется Firebug не может отлаживать динамически загруженные скрипты.

Есть проблемы, связанные с проблемой Firebug, но мне интересно, может ли моя архитектура быть настоящим преступником здесь. Где вы помещаете javascript, который относится к частичным представлениям? Есть ли лучшая практика?

4b9b3361

Ответ 1

Если вы столкнулись с проблемой включения javascript в свои частичные представления, я бы переключился на простое возвращение JSON в ваши вызовы ajax, таким образом вы сможете обрабатывать все это на клиенте. Хотя, я соглашусь, я всегда предпочитаю этот метод.

Что касается лучшей практики, я всегда считал, что плохо возвращать сгенерированный html в ajax-вызове вместо json, но это только я (НЕ стуча вас, его личный выбор). Очевидно, что Microsoft не считает свою плохую практику, поскольку они специально создали функциональные возможности для ее поддержки. Во всяком случае, я бы не стал рассматривать javascript с вашим html хуже, чем просто отправить html в первую очередь.

Мне любопытно, что, что в javascript?

Изменить: Чтобы быть конкретным, я выступаю за создание ajax-вызова, чтобы получить json, а затем использовать JS на стороне клиента для создания этого "частичного представления" и вставки его в dom. В отличие от того, чтобы сделать ajax-вызов, чтобы получить сервер, обработанный html для клиента, затем вставить в dom.

Некоторые частичные представления включают формы. Я хочу, чтобы они также были формами ajax, поэтому эти частичные просмотры имеют обработчики document.ready, которые превращают формы в формы ajax (через jquery.form).

Я бы подумал, что вы можете справиться с этим в обратном вызове/коде, который вставляет частичный вид в dom.

Изменить: если его упорядоченный, эффективный, хорошо организованный и работает для вас, я буду придерживаться его. Идея иметь все приятное и компактное в частичном виде определенно привлекательна, поэтому я не буду слишком беспокоиться о нарушении каких-либо лучших практик. Моя единственная проблема заключалась в том, что JS может быть повторно использован, что будет иметь место, если вы снова и снова вставляете один и тот же script. Но в этом случае это звучит так, как будто у вас много секционирования, поэтому я буду придерживаться ее, если вы не сможете обобщить свои сценарии и включить их в остальную часть вашего JS.

Ответ 2

В конце - JavaScript должен находиться в одном файле (потому что каждый HTTP GET стоит некоторое драгоценное время) и минимизируется. Эти ссылки могут вас заинтересовать: здесь и здесь.

Ваш способ обработки JS делает ненужную передачу данных - вместо отправки JS, делает его статическим, кэширует его на стороне клиента и параметризует.

Сообщение выше дает хороший намек (JSON), как параметризовать ваш JS:)