Windows.UI.WebUI.WebUIApplication与WinJS.Application有什么区别?
WinJS.Application是一个命名空间。 WebUIApplication是一个对象(或一类对象)。但请考虑以下因素:
WebUIApplication支持以下事件: WebUIApplication.activated WebUIApplication.resuming WebUIApplication.suspending WebUIApplication.navigated
WinJS.Application命名空间定义以下事件: onactivated oncheckpoint 的onerror 装载的 onready onsettings onunload的
特别是,为什么使用WebUIApplication而不是使用WinJS.Application进行恢复,但似乎激活和检查点可以以任何一种方式完成?
Windows.UI.WebUI.WebUIApplication.onresuming = function (args) { ... }; // OK
WinJS.Application.oncheckpoint = function (args) { ... }; // OK
WinJS.Application.onactivated = function (args) { ... }; // OK
WinJS.Application.onresuming = function (args) { ... }; // NOT OK
答案 0 :(得分:3)
您在Windows。*命名空间中引用的API是应用模型的实际核心。另一方面,WinJS中的所有内容都是包装器,旨在简化应用程序模型,这样做有价值。例如,大多数应用程序需要对挂起事件执行一些操作,并且WinJS提供了一个sessionState对象,该对象在重新启动应用程序时会自动保存,并重新加载。但是,因为WinJS通常不需要执行任何操作来恢复,所以它不会包装该特定事件。
换句话说,Windows。*(WinRT)API是您编写应用程序时必须使用的核心。 WinJS是一个可选的库,完全不需要,但包含大多数应用程序将使用的许多必需品(如控件)。通常,您将使用WinJS事件以方便使用。在此模型中包含恢复也很容易:为WebUIApplication.oneresuming事件添加处理程序,并调用WinJS.Application.queueEvent(“resuming”,...),然后将“恢复”事件路由到WinJS.Application中宾语。这样,您就可以在一个地方集中处理应用程序事件。
我在免费电子书的第3章,HTML,CSS和JavaScript的第二版编程Windows应用程序中,更多地讨论了这些关系,目前正在预览中。见http://aka.ms/BrockschmidtBook2。