iframe хорошо или плохо для моего сценария веб-приложения MVC - PullRequest
1 голос
/ 21 июня 2011

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

Я использую MVC2 с ASP.Net.Я объясню мой сценарий в общих чертах.У меня есть страница, которая имеет вид вкладки.Первая вкладка загружает запись из основной таблицы, а другие вкладки загружают данные для некоторой таблицы подробностей.И идеальный пример будет выглядеть так:

  • Вкладка 1: Добавить / редактировать клиентскую (основную) запись
  • Вкладка 2: Добавить / редактировать заказы для клиента
  • Вкладка 3: Добавить / изменить элементы для заказа (зависит от вкладки 2)
  • Вкладка 4: Добавить / изменить различные адреса для этого клиента

Яиспользуя вкладку JQuery UI.Теперь, насколько мне известно, iframes - если я создам эту страницу (View), чтобы включить первую вкладку и ее содержимое на одной странице (View), а на остальных вкладках есть iframe, в котором я использую отдельные страницы (Views).Вкратце - все зависимые вкладки будут иметь свои отдельные страницы.

Преимущества, которые я вижу -

  1. Страница становится v.light и быстрой, потому что, пока пользователь работаетна вкладке 1 другие вкладки будут загружать свой iframe.
  2. Функционально, каждая вкладка должна иметь свой собственный Добавить / Редактировать и независимый список.Например, если я добавляю адреса, то будет обновляться только мой адрес iframe, а остальные вкладки / страницы не должны отправлять и перезагружать данные.
  3. Для универсальной функции сохранения / отмены потребуется v.сложное кэширование в памяти иерархии объектов, если все находится на одной странице (просмотр).Я могу использовать пользовательские элементы управления (например, .ascx), но по-прежнему обрабатывать все в одном действии, как огромный и сложный.
  4. Мне не нужно беспокоиться о SEO, закладках или динамических измерениях.Вместо этого я получаю SOC (Разделение проблем), все распределяется v.well, и главное, что это становится чрезвычайно быстрым, поскольку постбэки разделены.

.. allэто если я получу возможность использовать iframes :) Однако я не вижу таких людей, как iframes вроде: Являются ли iframes ужасной идеей?

Если это так - есть ли эквивалентная альтернатива jQuery?Я ожидаю, что он будет иметь преимущества iframe и, по крайней мере, возможность динамически загружать контент через URL и отдельные постбэки.Я не хочу создавать беспорядочный BLOB-объект AJAX, который может обрабатывать разные вещи, но при этом сделать бэкэнд одинаково сложным.

Пожалуйста, дайте мне знать ваши мысли - я не хочу знать, насколько хорошие / плохие iframesЯ просто хочу знать, что соответствует моим требованиям и есть ли лучшая альтернатива iframes ... для моего сценария.

EDIT # 1: Я получил список iframeподдерживающие браузеры -

http://www.webmaster -resources101.com / Articles / View / 417 /

РЕДАКТИРОВАТЬ # 2: Я получил что-то, что можетбыть ступенькой к лучшему варианту вместо iframe -

Комбинация двух плагинов jQuery - это знаменитый плагин jQuery tabs, а другой - плагин adhoc, который может управлять обратной передачей контейнера.

jQuery ui tab: http://jqueryui.com/demos/tabs/

jquery-hijack: http://code.google.com/p/jquery-hijack/

Может ли это работать?Любые другие лучшие варианты, как это?

Ответы [ 3 ]

7 голосов
/ 21 июня 2011

TL; DR

Пожалуйста, дайте мне знать ваши мысли - я не хочу знать, насколько хорошие / плохие iframes, я просто хочу знать, что соответствует моим требованиям и есть ли лучшая альтернатива iframes .. для моего сценария.

AJAX решает ваши проблемы связи между клиентом и сервером. Существует множество библиотек на стороне клиента, которые делают ajax очень простым. Например, Backbone интегрируется с сервисом RESTful прямо из коробки.

Альтернативами AJAX являются COMET и WebSockets.

Тщательное рассуждение

1. Страница становится легкой и быстрой, потому что, пока пользователь работает на вкладке 1, другие вкладки будут загружать свой iframe.

  • Iframes блокирует загрузку главной страницы

Если вы хотите использовать обработчики onload, вам все равно придется ждать загрузки всех iframe.

Точно такие же понятия применяются к загрузке HTML по порядку. Я не думаю, что загрузка HTML является заметным узким местом. Я не могу представить, чтобы получить заметное увеличение скорости от использования фреймов.

Однако вы можете получить заметное увеличение скорости от использования разумного HTML и отложенной загрузки / пагинации.

2.Функционально, каждая вкладка должна иметь свой собственный Добавить / Редактировать и независимый список. Например, если я добавляю адреса, будет обновляться только мой адрес iframe, а остальные вкладки / страницы не должны отправлять и перезагружать данные.

Каждая вкладка должна иметь свою собственную форму, которую вы можете отправить обратно. Если у пользователя есть JavaScript, то вы используете ajax.

3. Для создания универсальной функции сохранения / отмены потребуется кэширование в памяти v.complex иерархии объектов, если все находится на одной странице (просмотр). Я могу использовать пользовательские элементы управления (то есть .ascx), но все равно обрабатывать все в одном действии похоже на огромный и сложный.

Нет. Используйте позвоночник / позвоночник. Реализуйте клиентский MVC, и он очень прост и хорошо структурирован.

4. Мне не нужно беспокоиться о SEO, закладках или динамических размерах. Вместо этого я получаю SOC (Разделение проблем), все распределяется v.well, и главное, что это становится чрезвычайно быстрым, поскольку постбэки разделены.

Вы все еще отправляете сообщения, а не используете ajax, который визуально медленнее. Используйте правильные HTML5-технические статьи, включая MVC на стороне клиента, и он будет распространяться очень быстро и очень быстро.

Недостатки:

  • Межфреймовая связь - это правильная боль.

Это замедляет вас и вызывает боль. Весь ваш контент в iframes тесно связан, потому что все они связаны с одним клиентом.

Как вы собираетесь справиться со сменой клиента на главной вкладке? Собираетесь ли вы перезагрузить остальные 3 фрейма, чтобы заново заполнить его правильными данными?

Это очень дорого и медленно

  • не семантический

Контексты, в которых этот элемент может использоваться: где ожидается встроенный контент.

Ваши вкладки не являются встроенным контентом. Там просто нормальные формы HTML и они должны быть.

  • Отсутствие повторного использования кода в iframe, поскольку каждый из них имеет свой собственный пул кода.

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

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

Используйте позвоночник или позвоночник или knockoutjs . Вы также можете рассмотреть шаблонизатор по вашему выбору (я бы порекомендовал EJS или Jade)

0 голосов
/ 30 августа 2012

Мне пришлось выйти из этого поста, чтобы завершить его - Альтернатива для фреймов для плагина jQuery ui tabs - с поддержкой обратной передачи

Я не хотел полностью "JSified" обработки базовой модели ajax, потому что она приносит детали уровня бизнес-объекта на уровне представления. Таким образом, чтобы сохранить его абстрактным, я использовал плагин jQuery jquery.forms.js, который позволяет изменить мои формы.

В сочетании с концепцией MVC «частичное представление» я смог получить полное решение обратной передачи AJAX (не усложняя его и не применяя обработку уровня моей модели на стороне клиента в качестве функций в knockoutjs, backbone и т. Д. отлично, но я хотел сохранить простоту и контроль (на стороне сервера)

Спасибо.

0 голосов
/ 21 июня 2011

Можно использовать iframe при условии, что у вас есть контроль над браузером, на котором работает приложение.

В противном случае вы скоро столкнетесь с такими проблемами, как совместимость браузера.

...