我正在尝试编写我的第一个单页应用程序。这个想法是有 1 个包含许多<div>
标签的 HTML 文件;其中每个<div>
代表一个网页“页面”。然后应用程序<div>
一次只显示 1,并隐藏其他。这样,当用户浏览我的应用程序时,我实际上只是显示/隐藏不同的“页面”div,并给人一种单页应用程序的错觉。
附加要求是:
- 这是一个 HTML5 应用程序
- 每个页面 div 也必须映射其自己的可收藏 URL(
http://myapp.example.com/#fizz
、http://myapp.example.com/#buzz
等) - 单个页面 div 是可收藏的,应用程序必须使用 HTML5 历史 API
我决定使用 Crossroads 进行路由,并使用 Hasher 进行历史记录。另一个主要竞争者是 AngularJS,但最后我决定反对 AngularJS,因为它对于我在这里尝试做的事情来说太重了,而且似乎有一个更陡峭的学习曲线与之相关。
到目前为止,我的项目具有以下目录结构:
myapp/
index.html
myapp.js
myapp.css
signals.min.js <-- Required by both Crossroads and Hasher
crossroads.min.js
hasher.min.js
index.html
包含我的,myapp.css
和文件的 JSFiddlemyapp.js
在这里:
这个想法是,用户可以单击“导航栏”中的链接之一(“主页”、“关于”、“联系方式”)并被带到代表该特定页面的“页面”(div)。如您所见,默认的“页面”应该是HOME
,这意味着这是您应该能够看到的唯一 div。但是所有的页面 div 都是可见的,没有一个是隐藏的。在我能够正确显示/隐藏页面 div 之前,我无法真正测试路由/历史功能。我是否以某种方式错误地配置了 Crossroads/Hasher?