对于 Windows 8 和 RT,JavaScript API 中的所有功能是否也在用于 Windows 8/RT 开发的 XAML/C# 中?我听说它补充了大量的 API 功能,但不是 100%。
1 回答
是和否:
- 是的,大多数 API 范例都是相同的。
- 不,它们被称为不同的东西。
- 不,它们的调用方式不同。
- 不,它们并非都以相同的方式运行(返回值等)。
由于 JS 主要在 HTML 之上运行,并且 JS 是单线程的,并且是松散类型的,并且具有基于 lambda 和闭包/范围传递的传统,而不是传统的类构造,DOM 库和特性是也不同于 C# + XAML。
所以问题归结为您在谈论什么:
如果您的问题是:
“我可以通过特定于 MS 的库以我选择的语言访问 Windows RT 功能吗? ”
答案是肯定的。
如果您的问题是:
“我可以在 JS/HTML 中做所有我可以在 C#/XAML 或 C++ 中做的事情吗? ”
答案是否定的。
如果您的问题是:
“我对语言 X 中 WinRT 方法调用/API 占用空间的了解是否直接翻译
(即:[CTRL+X|CTRL+C],CTRL+V/逐字)为语言 Y? ”
答案没有。
因此,充分利用这一点的关键是了解什么是 RT 规范的一部分,哪些不是。
例如,XBox360 控制器支持:
在 JS 中不支持(至少不是我上次检查规范时——在开发版本期间)。
为什么不?
它不是 WinRT 支持的部分,ergo,不是 RT 库的一部分,ergo,无法从 JS RT 库访问。
但是在 C# 或 C++ 中使用 DirectInput/XInput,在 RT 应用程序中,您可以完全支持 360 控制器。
另一方面,WinRT 库中实际支持的所有内容(文件访问、网络摄像头/音频访问、Promises 等)在库内部都是可用的(可访问/以特定语言的方式运行),而与语言无关,并且在方法调用方面都以大致相同的速度运行(因为每种语言基本上都有一个用于访问 C++ 实现的包装器),但不一定是最终运行时(网络摄像头应用程序的 HTML5 画布应用程序可能比一个 C++ 应用程序......毫不奇怪)。