Backbone.js 主干路由:是否需要修改服务器?
现在,我正在主干应用程序中使用哈希路由。我想使用完整的路线,因此我会有一个URL,看起来像(在我的SPA中,Backbone.js 主干路由:是否需要修改服务器?,backbone.js,routes,Backbone.js,Routes,现在,我正在主干应用程序中使用哈希路由。我想使用完整的路线,因此我会有一个URL,看起来像(在我的SPA中,leads是页面): leads/#/main contact 而不是 leads#主要联系人 我加了一行: Backbone.history.start({pushState:true,根:“/”}) 但是路线/main contact不起作用。我知道我可能需要对服务器进行一些修改。有人能告诉我这项工作需要做些什么吗?您需要让服务器端提供一个包含路由器代码的页面,而不管给定的路径如何 /
leads
是页面):
leads/#/main contact
而不是
leads#主要联系人
我加了一行:
Backbone.history.start({pushState:true,根:“/”})代码>
但是路线/main contact
不起作用。我知道我可能需要对服务器进行一些修改。有人能告诉我这项工作需要做些什么吗?您需要让服务器端提供一个包含路由器代码的页面,而不管给定的路径如何
/leads/*-->leads.html
我再具体不过了,因为在服务器端执行此操作的机制取决于您使用的服务器端技术。在主干路由器中不使用/as路由的情况下尝试主联系人修改重写规则以获取文件(处理路由逻辑的文件)如前所述,您需要确保服务器处理针对lead/
的请求,即将这些请求转发到lead.php
或类似文件。这通常取决于服务器软件,而不是所使用的服务器端语言。例如,快速的谷歌搜索显示以下链接:
对于Backbone.Router
您不需要做任何事情<代码>主干。历史记录
自动删除路由中的任何前导斜杠和尾随空格;iemain contact
将同时匹配#main contact
和#/main contact
。下面是一个简短的例子:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<ul>
<li><a href="#/home">Home</a></li>
<li><a href="#/help">Help</a></li>
<li><a href="#/about">About</a></li>
</ul>
<div id="message"></div>
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="https://raw.github.com/documentcloud/underscore/master/underscore.js"></script>
<script src="https://raw.github.com/documentcloud/backbone/master/backbone.js"></script>
<script type="text/javascript">
$(function () {
var MyRouter = Backbone.Router.extend({
routes: {
"home": "home",
"help": "help",
"about": "about"
},
home: function () { this.msg("home"); },
help: function () { this.msg("help"); },
about: function () {this.msg("about"); },
msg: function(m) { $("#message").text(m); }
});
new MyRouter();
Backbone.history.start();
});
</script>
</body>
</html>
$(函数(){
var MyRouter=Backbone.Router.extend({
路线:{
“家”:“家”,
“帮助”:“帮助”,
“关于”:“关于”
},
home:function(){this.msg(“home”);},
help:function(){this.msg(“help”);},
about:function(){this.msg(“about”);},
msg:function(m){$(“#message”).text(m)}
});
新的MyRouter();
Backbone.history.start();
});
注意:我只是通过从本地文件运行来测试上述示例。据我所知,查询的“#”符号后面的部分不会发送到服务器。这纯粹是客户端要处理的“占位符”。所以你不能有像“leads/#/某物”这样的路线