Мы собираемся внедрить кучу гаджетов OpenSocial. Они не будут запускаться на Facebook или в любой другой социальной сети, а на нашем собственном внутреннем сервере Apache Shindig. (Мы встраивать эти устройства, используя плавающие фреймы в нормальном ASP.NET MVC зрения cshtml)Разработка OpenSocial Gadget в Visual Studio
Согласно http://docs.opensocial.org/display/OSREF/OpenSocial+Tutorial, структура гаджет так:
<?xml version="1.0" encoding="UTF-8" ?>
<Module>
<ModulePrefs title="Hello World!">
<Require feature="opensocial-0.8" />
</ModulePrefs>
<Content type="html">
<![CDATA[
Hello, world!
]]>
</Content>
</Module>
В то время как HTML, CSS и JS заделаны внутри тега. Если мы хотим создать такой файл в формате XML в Visual Studio, он делает невозможным выделение синтаксиса, IntelliSense, IntelliTrace и JavaScript. Это не очень удобно.
Вопрос 1: Знаете ли вы, что какое-либо пригодное для использования (!) Расширение для Visual Studio, которое включает все эти функции для этих гаджетов XML OpenSocial?
Вопрос 2: Или, если нет, попросите кого-нибудь из вас когда-либо попробовать то же самое и нашли хороший способ обойти эти препятствия?
Update: Мы сделали доказательство правильности концепции использования стадии сборки поста, который занимает простой HTML-файл, обычный файл JS, и XML-скелет и объединяет их в гаджет. В режиме отладки, мы могли бы очевидно включать обычные файлы непосредственно в процессе развертывания мы называем SHINDIG с объединенным файлом XML с шагом после сборки:
if (@Html.IsDebugMode())
{
<iframe src="/Gadgets/HelloWorld.html"/>
}
else
{
<iframe src="http://example.org/shindig?url=http://example.org/Gadgets/Merged/HelloWorld.xml"/>
}
Это как работает решение:
- Добавить файл Gadgets \ HelloWorld.js
- Добавить файл гаджетов \ HelloWorld.html, содержащий файл js.
- Добавить файл гаджетов \ HelloWorld.xml с гаджетом XML, но с пустым тегом
<Content>
. - Создайте страницу CSHTML с iframe, которая включает обычный HTML-файл в режиме отладки, но включает в себя гаджет в режиме деблокирования.
- Определите событие создания сообщения, которое читает содержимое HelloWorld.html и вставляет его в тег Content XML. Кроме того, он считывает JS-код из JS-файла и заменяет включение сценария
<script src="HelloWorld.js" />
в HTML встроенным JavaScript<script>...</script>
с соответствующим кодом.
Преимущества:
- Четкое разделение логики (JS-файл), презентация (HTML-файл) и метаданные (XML файл).
- Полная поддержка HTML-разработки Visual Studio при работе с HTML.
- Полная поддержка Javascript при работе над JS.
- Такие инструменты, как JSLint, могут быть использованы для проверки стиля JavaScript.
Предостережения:
- В режиме отладки, если мы называем SHINDIG, чтобы сделать гаджет, мы не имеем способ открыть JavaScript в Visual Studio и установив точку останова. Однако, если в коде JS возникнет какая-либо ошибка, Visual Studio откроет представление о JS-коде и отметит ошибочную строку. Когда это представление открыто, мы можем использовать его для установки точек останова. Живое редактирование невозможно, хотя из-за того, что исходный JS-файл только объединяется в XML в процессе сборки.
- С другой стороны, если мы включим простой HTML-файл в качестве iframe вместо того, чтобы его визуализировать, мы получаем возможность непосредственного редактирования и отладки непосредственно в соответствующих файлах. Но, конечно, все функции Shindig неэффективны. В частности, все скрипты, автоматически добавленные Shindig, отсутствуют или должны быть включены вручную.
В идеале каждое изменение файла HTML или JS при запуске приложения в режиме отладки немедленно обновляет объединенный XML-файл гаджета, что позволяет редактировать жизнь даже при использовании Shindig.
Hi пользователь1371592. Какую конкретную проблему вы могли бы решить с помощью фреймов внутри гаджета html? – chiccodoro