javascript – 让骨干路由与pushstate和node.js / express一起使用作为服务器
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 让骨干路由与pushstate和node.js / express一起使用作为服务器,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1795字,纯文字阅读大概需要3分钟。
内容图文
我正在尝试使用前端的backbone.js和node.js / express作为服务器构建单页应用程序,我希望为根提供基本HTML文件,然后当用户导航到任何路径时,例如
mydomain.com/foo/bar
我希望能够通过javascript在客户端处理该路径,而不是往返于服务器.我正在阅读骨干路由和HTML5推送状态.在this article他描述了像这样的推送状态,
实际上,PushState实际上只不过是JavaScript的标准API,它允许我们通过将完整的URL“推送”到浏览器的URL中来操纵浏览器历史记录,而无需往返服务器,并响应URL中的更改使用Javascript – 所有都不使用URL哈希片段.
但是当我使用push状态时,它实际上发出了服务器请求,并期望服务器在/ foo / bar下传递内容.我不明白我怎么能避免这种情况.
现在让我们假设即使使用推送状态,当您直接访问此URL时,您的客户端将在mydomain.com/foo/bar下发出服务器请求.在这种情况下,由于我正在提供默认的HTML文件,并且此默认HTML文件包含指向其中脚本的链接:
<script type="text/javascript" src="/scripts/myscript.js" ></script>
当这个HTML加载时,它开始在/ foo目录而不是root下查找脚本,因为服务器是在/ foo下请求的,这显然不存在.我该如何解决?
我在这一点上真的很困惑.我想知道URL路由通常是如何在单个页面应用程序中完成的.任何帮助将不胜感激.您还可以参考我发布的有关同一问题的其他问题:Backbone Router : Get rid of # in the URL
解决方法:
您尝试实施的解决方案非常有趣,但并非如此简单.当您的服务器收到对mydomain.com/foo/bar的请求时,您应该使用前端(JavaScript)应用程序可以获取的一些参数重定向到您的根目录,以了解原始请求的用途.例如:
>客户端发送GET http://mydomain.com/foo/bar
>服务器重定向(使用Location标头集响应302)到http://mydomain.com/#!/foo/bar
>您的SPA在浏览器中加载,并在启动时检查哈希并找到#!/ foo / bar,因此您删除哈希并触发/ foo / bar路由(这是推送状态).您生成的URL再次是http://mydomain.com/foo/bar:用户浏览的原始网址.
Grooveshark做了类似的事情,虽然它实际上响应了1中发送的请求的页面,它在客户端中进行哈希替换,然后向服务器发送另一个请求.对我来说看起来没必要,也许我忽略了一些东西.
内容总结
以上是互联网集市为您收集整理的javascript – 让骨干路由与pushstate和node.js / express一起使用作为服务器全部内容,希望文章能够帮你解决javascript – 让骨干路由与pushstate和node.js / express一起使用作为服务器所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。