1

我们即将实现一堆 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. 添加一个 Gadgets\HelloWorld.js 文件
  2. 添加包含 js 文件的 Gadgets\HelloWorld.html 文件。
  3. <Content>添加一个带有小工具 XML 的 Gadgets\HelloWorld.xml 文件,但标签为空。
  4. 使用 iframe 创建一个 CSHTML 页面,该页面在调试模式下包含纯 HTML 文件,但在发布模式下包含小工具。
  5. 定义一个 Post Build Event,它读取 HelloWorld.html 的内容并将其粘贴到 XML 的 Content 标记中。此外,它从 JS 文件中读取 JS 代码,并将 HTML 中包含的脚本替换为具有相应代码<script src="HelloWorld.js" />的内联 JavaScript 。<script>...</script>

优点:

  • 逻辑(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 时也可以进行生命编辑。

4

1 回答 1

-1

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

于 2012-05-03T05:13:07.307 回答