在Office 365 App部件中调试Dart

时间:2014-11-30 06:33:24

标签: dart sharepoint-2013

我创建了一个nodeJS应用程序,该应用程序从Office 365,SharePoint Online的SP API TypeScript定义文件中代码生成Dartlang INTEROP包。

我正在尝试利用Visual Studio 2013(更新4)将测试应用程序部件部署到SharePoint在线,其中app.js将是飞镖测试应用程序的主要功能,代码看起来如下所示。

import 'package:ms_sp_api/js_api_sp.dart' as SP;
void main() {
  SP.ClientContext clientContext;
  SP.ListCreationInformation listCreationInfo;
  SP.Web web;
  var list;

  clientContext =  new SP.ClientContext("url to test site")..get_current();
  //sp..get_current();
  web = clientContext.get_web();
  listCreationInfo = new SP.ListCreationInformation();
  listCreationInfo.set_title("User data");
  listCreationInfo.set_templateType(SP.ListTemplateType.genericList);
  list = web.get_lists().add(listCreationInfo);

  clientContext.load(list);
}

假设我能够将Dart文件部署为SharePoint App部件,并假设我能够让App部件调用测试Dart应用程序的main()函数,我仍然需要能够调试Dart文件 我是否可以将Dartium附加到已部署的App部件的URL并成功调试它?

我的希望是,在我调试之后,我会dart2js dart应用程序,这将是部署在App部分的脚本。我已在app部分中成功部署了简单的dart应用程序,但在这种情况下,我需要调试应用程序部分以获得Dart工作的SP API。我不相信我可以在本地测试代码生成的API,它必须托管在SharePoint应用程序部分/页面中。

以下是我正在尝试创建的内容的高级概述,这是一系列完全在Dart中构建的业务组件,可以部署到O365并利用我非常接近的许多第三方JS库。通过一组Typescript到Dart,代码生成的Dart JS INTEROP库......

enter image description here

非常感谢任何想法或帮助。

2 个答案:

答案 0 :(得分:1)

感谢Günter,该方法确实有效,但仅限于提供商托管应用程序模型而非SharePoint托管应用程序模型。原因是当前SharePoint Online不允许您指定其他MIME类型,因此application/dart被拒绝。在提供商托管模型中,您可以部署为托管在单独服务器(在我的情况下为Azure)中的MVC项目,然后您只需将新的MIMETYPE添加到IISExpress。

我还建议下载Visual Studio的Web Essentials VISX扩展,它允许您将目标浏览器建立为Chromium(在dart中找到)。

我做的另一件事是我在MVC文件夹下面/内部创建了Dart项目,以便它可以直接包含在MVC项目中。这将允许我在单个应用程序部件项目中包含几个Dart项目,因为我需要测试很多代码生成的API代理。

我使用Web Storm编辑Dart项目,然后只需要在MVC项目中添加一个集成逻辑,就可以将dart逻辑直接引入MVC项目。将dart项目直接放在Visual Studio MVC项目中具有额外的好处,即在TFS内管理所有dart文件,在SharePoint App零件项目中同步。

以下是从Typescript定义文件到Dart INTEROP代理库的转换的高级概述。我使用集成在Typescript中的抽象语法树节点服务来剖析Typescript定义文件。这是一个迭代过程,我重新运行转换器,为转换处理器(通过XML帮助文件)添加额外的洞察力,例如重命名类型名称,类单例,底层枚举类型和构造函数/类体定义。变压器相当不错,但需要一些帮助才能生成正确的输出。我希望能够转换任何Typescript定义文件,以便代码生成一个等效的Dart API代理库,它应该轻松地与第三方JS库集成(假设Typescript定义文件具有高质量)。

enter image description here

现在我知道这个MVC集成方法确实有效,它将允许我调试代码生成的SharePoint / Office 365 API INTEROP代理库用于dart,这实际上是非常庞大的规模和复杂性,因此我非常感激能够在Chromium调试器中逐步完成它。

完成所有测试后,我将构建最终产品到JS脚本,该脚本将直接包含在生产就绪的SP Web部件中,此时可以是SharePoint托管或提供托管,因为此时它只是JavaScript( Dart的真正好处)。

再次感谢您的帮助。

干杯 约翰

答案 1 :(得分:0)

只需在Dartium中加载页面,打开Chrome开发工具,在sources标签中找到该脚本,设置断点并执行调用代码的操作。然后应该打破断点。