【发布时间】:2019-01-19 22:14:10
【问题描述】:
我有一个 Chrome 应用程序(本质上是一个 Chrome 扩展程序,具有一些额外的 API 访问权限并在单独的窗口中显示其 UI),我正在尝试移植到 UWP。我有 Chrome 应用程序的源代码,但该应用程序的很多工作都是在其后台页面中完成的。 UWP JS 应用似乎没有后台页面的概念,或与 Chrome 扩展/应用 API 等效的用于与后台页面交互的概念。
在 UWP JS 应用程序中是否有某种方法可以创建与应用程序一样运行、在应用程序运行之前完全加载、不显示 UI 并且可以从其他页面访问的“背景页面” ?它需要是持久的(即不是每次导航 UI 页面时都重新加载)并且始终可用(即在其他页面加载之前完成加载)。
或者,如果有更好的方法来做到这一点(将 Chrome 应用程序移植到无法运行 Chrome 并且需要运行客户端/不能托管在服务器上的 Windows 设备),请提出替代方法。
【问题讨论】:
-
UWP 应用中没有这样的“背景页面”,Chrome 扩展与 UWP 应用完全不同,为什么要移植到 UWP?
-
@BreezeLiu-MSFT 我想移植它,这样我就可以在无法运行的 Windows 设备上运行该应用程序(它是 Chrome 应用程序,而不是扩展程序,尽管差异不大)运行 Chrome,例如 Xbox、Win10 S、IoT 或 HoloLens 等。鉴于它是用 JS 编写的(甚至没有任何本机代码绑定,尽管它确实调用了一些我需要替换的特定于 Chrome 的 API),我认为最好的方法是将它放在 JS UWP 中。但是,我需要一种方法来处理通常存在于后台页面中并通过后台页面访问的逻辑。
-
你想在你的uwp项目中只有JS代码吗?也许您可以尝试创建一个 Windows 运行时组件并从 JavaScript 调用它。请参阅主题 Windows Runtime components 创建 c++/c# Windows 运行时组件并从 JS 项目中调用它和主题 Raising Events in Windows Runtime Components。
-
@BreezeLiu-MSFT 嗯,这个想法是移植应用程序,而不是用另一种语言编写它的克隆。很多繁重的工作是在后台页面完成的;用 .NET 语言重写它本质上意味着重写除 UI 之外的所有内容,包括自定义网络协议(通过 websockets 实现)和一些加密代码(可能会变得更快,但我相信原始实现)不仅仅是我的重新实现)。
标签: javascript uwp google-chrome-app windows-10-universal porting