【问题标题】:Is there a machine-readable version of the WinRT API for JavaScript?是否有适用于 JavaScript 的 WinRT API 的机器可读版本?
【发布时间】:2012-06-06 08:57:11
【问题描述】:

是否有 WinRT API 的机器可读版本?

我正在寻找类似 WebIDL、经典 IDL 或任何其他机器可读格式的东西,这些格式将列出可​​在 JavaScript 中访问的 WinRT 的所有类、常量、方法等。

如果它包含上述每个条目的单行描述,和/或相关 MSDN 文档页面的链接,那当然会更好:-)

编辑

  • Windows.winmd 包含描述,但不包含应用 IL for JavaScript 时的规则,有任何官方规范吗?用于类型转换和命名?
  • WinJS 命名空间呢? (不在 Windows.winmd 中)
  • 【问题讨论】:

    • 关于 windows.winmd 文件:我希望有一些更标准化和特定于 JS 的东西,AFAIK winmd 是 .Net IL,因此主要与 C#/C++ 相关。我不确定 f.i.一切将如何在 JS 世界中转化,f.i.适用于所有基本类型(整数与数字、日期与日期时间等)
    • 顺便说一句,windows.winmd 文件中绝对没有(零) il - 这是一个仅元数据的程序集。这很重要,因为 winmd 文件只描述结构,它们不包含代码(请注意,C# 编译器可以生成也包含一些代码的混合 winmd 文件,这是为了支持某些 C# 场景)
    • 感谢您的澄清!

    标签: javascript windows-runtime idl


    【解决方案1】:

    windows.winmd 文件包含 winrt API 的 API 定义 - 这些直接适用于所有三种语言,并且它们是机器可读的。

    正如您在评论中提到的,根据语言投影处理类型的方式存在一些细微差异,但这些转换是严格机械的。例如,对于 Javascript,投影更改很简单:

    1. 数值类型(int、float、double 等)投影为 Number
    2. 字符串投影为字符串
    3. DateTime 预计为 Date()
    4. 事件被提升为 addEventListener("(event name)", eventHandler);
    5. 如果一个方法有多个输出参数,该方法会返回一个属性名称与该方法的参数名称匹配的对象。

    毫无疑问,我还错过了其他一些 Javascript 映射,但这些是最重要的。当前支持的其他语言(C++、C#、低级 C++)具有应用于元数据的类似机械转换。

    【讨论】:

    • 这些机械变化是否有完整的规范?还有其他更改,例如不同的名称(例如第一个字符的小写字母),但是在浏览规范时,我记得遇到了一些未更改的标识符(文档错误或规范?)此外,文档中的某些命名空间具有 JS sn-ps ,但其他人不支持,即使它们似乎在 JS 中受支持(但它们都是?)
    • 对 WinJS 命名空间有什么想法吗?那个不在 Windows.winmd 中
    • 对于投影类型,是否在 JS 端进行了扩展?例如,如果我使用 winmd 作为参考,有一个 DateTime.UniversalTime,是否扩展了 Date 原型以支持它?
    • 我不相信有关于机械变换的公共规范(目前)。 WinJS 是纯 JS 代码,我不知道,只是 winmd 文件。不知道 JS 团队是否为 Windows 8 扩展了 Date 原型。
    • 感谢您的信息!我不知道说几句好话是否会产生任何影响,但如果 WebIDL 版本 (w3.org/TR/WebIDL) 可用于真正简化事情的所有 WinRT/Metro 版本,并且它将与网络的其他部分完美融合DOM 和 API。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多