Это плохая практика, чтобы возвращать частичные представления, которые содержат JavaScript? - PullRequest
13 голосов
/ 14 мая 2009

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

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

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

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

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

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

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

Ответы [ 2 ]

7 голосов
/ 14 мая 2009

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

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

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

Edit: Точнее говоря, я за то, чтобы сделать вызов ajax для получения json, а затем использовать JS на стороне клиента для создания этого «частичного представления» и вставить его в dom. В отличие от ajax-вызова для получения HTML-кода сервера, который клиент затем вставляет в DOM.

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

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

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

3 голосов
/ 14 мая 2009

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

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

Пост выше дает хороший совет (JSON), как параметризовать ваш JS:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...