我正在使用JavaScript制作游戏,目前我正在使用window.location = "somepage.html"
执行导航,但我不确定这是否是正确的方法。正如我在标题中所说,我选择了空白应用程序模板,因此我没有任何navigator.js
或类似内容。
你能告诉我最好的方法吗?
答案 0 :(得分:2)
虽然你可以使用window.location来执行导航,但我相信你已经注意到了一些缺点:
出于这些原因,WinJS + navigator.js创建了一种通过DOM替换来执行“页面”的方法,这与“单页面网络应用程序”使用的策略相同。也就是说,你在default.html中有一个div,在其中加载一个卸载DOM片段以提供页面导航的外观,而你实际上并没有离开default.html的原始脚本上下文。因此,所有内存变量都会在所有页面导航中持续存在。
机制的工作方式如下:WinJS.Navigation提供了一个API来管理导航和后台堆栈。但是,它本身就是管理一个后端阵列和火灾导航相关事件。要进行DOM替换,必须要听取这些事件。
这些监听器是navigator.js实现的,所以这是一段代码,你可以为此目的拉入任何项目。 Navigator.js还实现了一个名为PageControlNavigator的自定义控件(通常是Application.PageControlNavigator),它实现了侦听器。
留下了如何定义“页面”的机制。这是WinJS.UI.Pages API的用途,navigator.js假设您已经以这种方式定义了页面。 (从技术上讲,你可以为此定义自己的页面机制,可能使用低级WinJS.UI.Fragments API,甚至从头开始实现你自己的。但WinJS.UI.Pages的出现是因为每个接近这个问题的人都出现了使用相同的解决方案,因此WinJS团队提供了一个每个人都可以使用的实现。)
然后放在一起:
将空白应用模板转换为导航模板项目并不太难 - 将default.html / .css / .js内容移动到页面控制结构中,将navigator.js添加到default.html(以及您的项目) ),并将PageControlNavigator放入default.html。我建议您从导航应用模板创建一个项目以供参考。鉴于上述解释,您应该能够理解结构。
有关详细信息,请参阅我的免费电子书的第3章 Programming Windows Store Apps with HTML, CSS, and JavaScript, Second Edition ,其中我讨论了应用程序解剖和页面导航以及大量代码示例。