在Visual Studio中开发OpenSocial小工具

时间:2012-05-02 14:36:31

标签: visual-studio opensocial

我们即将实施一堆OpenSocial小工具。它们不会在Facebook或任何其他社交网络上运行,而是在我们自己的内部Apache Shindig服务器上运行。 (我们使用iframe在普通的ASP.NET MVC cshtml视图中嵌入这些小工具)

根据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嵌入在标记中。如果我们想在Visual Studio中以XML格式开发这样的文件,则无法进行语法高亮显示,IntelliSense,IntelliTrace和JavaScript调试。那不太舒服。

问题1:您是否知道Visual Studio的任何可用(!)扩展为这些OpenSocial XML小工具重新启用所有这些功能?

问题2:或者如果没有,有没有人尝试过相同的方法,找到解决这些障碍的好方法?


更新:我们已经完成了使用构建后步骤的概念验证,该步骤采用纯HTML文件,普通JS文件和XML框架,并将它们合并到小工具中。在调试模式下,我们可以想象直接包含普通文件,而在部署过程中我们使用合并后的XML文件调用Shindig:

if (@Html.IsDebugMode())
{
    <iframe src="/Gadgets/HelloWorld.html"/>
}
else
{
    <iframe src="http://example.org/shindig?url=http://example.org/Gadgets/Merged/HelloWorld.xml"/>
}

这就是解决方案的工作原理:

  1. 添加小工具\ HelloWorld.js文件
  2. 添加包含js文件的Gadgets \ HelloWorld.html文件。
  3. 使用小工具XML添加Gadgets \ HelloWorld.xml文件,但标记为空<Content>
  4. 使用iframe创建一个CSHTML页面,该iframe包含处于调试模式的纯HTML文件,但包含处于发布模式的小工具。
  5. 定义一个Post Build事件,它读取HelloWorld.html的内容并将其粘贴到XML的Content标记中。此外,它从JS文件中读取JS代码,并使用内联JavaScript <script src="HelloWorld.js" />替换HTML中的脚本包含<script>...</script>和相应的代码。
  6. 优点:

    • 清晰分离逻辑(JS文件),演示文稿(HTML文件)和元数据(XML文件)。
    • 处理HTML时完成Visual Studio HTML创作支持。
    • 在处理JS时完成Javascript创作支持。
    • JSLint等工具可用于检查JavaScript样式。

    注意事项:

    • 在调试模式下,如果我们调用Shindig呈现小工具,我们就无法在Visual Studio中打开JavaScript并设置断点。但是,如果JS代码中发生任何错误,Visual Studio将打开JS代码的视图并标记错误的行。一旦该视图打开,我们也可以使用它来设置断点。但是不能进行实时编辑,因为原始JS文件只在构建过程中合并到XML中。
    • 另一方面,如果我们将纯HTML文件包含为iframe而不是让Shindig呈现它,我们可以直接在各自的文件中进行实时编辑和调试。但当然所有的Shindig功能都没有效果。特别是,Shindig自动添加的所有脚本都缺失或必须手工包含。

    理想情况下,在调试模式下运行应用程序时,HTML或JS文件中的每个更改都会立即更新合并的Gadget XML文件,从而即使在使用Shindig时也可以进行生命编辑。

1 个答案:

答案 0 :(得分:-1)

A2:您可以在单独的js文件中开发javascript,并将其包含在小工具xml中,就像html文件包含js include一样。此外,您可以在小工具html中使用框架,但这可能会阻止您使用Shindig提供的某些js API。