2012-05-02 5 views
1

Мы собираемся внедрить кучу гаджетов 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"/> 
} 

Это как работает решение:

  1. Добавить файл Gadgets \ HelloWorld.js
  2. Добавить файл гаджетов \ HelloWorld.html, содержащий файл js.
  3. Добавить файл гаджетов \ HelloWorld.xml с гаджетом XML, но с пустым тегом <Content>.
  4. Создайте страницу CSHTML с iframe, которая включает обычный HTML-файл в режиме отладки, но включает в себя гаджет в режиме деблокирования.
  5. Определите событие создания сообщения, которое читает содержимое 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.

ответ

-1

A2: Вы можете развить свой javascript в отдельном файле js и просто включить его в гаджет xml, как и в html-файле, содержащем js include. Кроме того, вы можете использовать фреймы внутри вашего гаджета html, но это может помешать вам использовать некоторые из js API, доступные от Shindig.

+0

Hi пользователь1371592. Какую конкретную проблему вы могли бы решить с помощью фреймов внутри гаджета html? – chiccodoro

Смежные вопросы