Javascript 将节点路由绑定到主干路由

Javascript 将节点路由绑定到主干路由,javascript,node.js,backbone.js,express,Javascript,Node.js,Backbone.js,Express,我正在尝试将路由从节点后端链接到前端的某个视图。 我们的目标是有一个密码保护的部分(可在/admin访问),在那里我们可以添加新的博客文章。因此,在某个时候,我希望能够呈现一个登录模板,如果用户进行身份验证,则显示一个表单,在该表单中他可以创建新的博客文章 以下是该项目的github: 我在服务器上的server/routes/blog_admin.js中创建了一个路由 这服务于/admin,模板包含一个div,其id通常包含主干视图,但它不包含主干视图,这就是为什么我试图弄清楚,但我在web上

我正在尝试将路由从节点后端链接到前端的某个视图。 我们的目标是有一个密码保护的部分(可在/admin访问),在那里我们可以添加新的博客文章。因此,在某个时候,我希望能够呈现一个登录模板,如果用户进行身份验证,则显示一个表单,在该表单中他可以创建新的博客文章

以下是该项目的github:

我在服务器上的server/routes/blog_admin.js中创建了一个路由 这服务于/admin,模板包含一个div,其id通常包含主干视图,但它不包含主干视图,这就是为什么我试图弄清楚,但我在web上找不到示例

在我的主干路由器文件中,我定义了管理路由,以提供正确的视图,但只有当我转到/#admin时,它才会这样做

有没有办法将此BlogPostContainerView绑定到/admin?我需要使用不同的路由器吗?这是我需要在服务器上做的事情还是前端代码

我对这个框架相当陌生,所以请不要犹豫,分享最佳实践或更好的解决方案。

客户端路由(在主干路由器中注册)与服务器端路由(在expressjs中注册)完全分开。主干路由的工作原理是检查浏览器地址栏中URL中的锚标记(由#hashtag字符后跟一些文本表示)。当主干在地址栏中看到“#/admin”时,它会创建并呈现一个视图;当“/admin”在地址栏中时,主干会忽略它,浏览器会像处理任何其他HTTP GET请求一样处理它,并在服务器上调用/admin路由

通常,在主干网络应用程序中,您将在路由器中注册路由功能,从而创建模型和视图。该模型有一个名为
url
的程序,它指向服务器上的某个位置;主干网获取存储在该位置的数据并将其填充到模型中。然后,视图使用该模型的内容在屏幕上呈现一些HTML:

var myRouter = Backbone.Router.extend({
  "routes": {
    "users/admin": "getAdmin"
  },

  "getAdmin": function() {
    var model = new MyModel();
    var view = new MyView({
      "model": model
    });

    model.fetch({
      "success": function() {
         view.render();
      }
    });
});

var MyModel = Backbone.Model.extend({
  "url": "/admin"
});

var MyView = Backbone.View.extend({
  "render": function() {
    $("body").append($("<p>" + JSON.stringify(model.attributes) + "</p>"));
  }
});
var myRouter=Backbone.Router.extend({
“路线”:{
“用户/管理员”:“getAdmin”
},
“getAdmin”:函数(){
var模型=新的MyModel();
var view=newmyview({
“模型”:模型
});
model.fetch({
“成功”:函数(){
view.render();
}
});
});
var MyModel=Backbone.Model.extend({
“url”:“/管理员”
});
var MyView=Backbone.View.extend({
“render”:函数(){
$(“body”).append($(“”+JSON.stringify(model.attributes)+“

”); } });
请注意,这个示例期望您的服务器在模型向“/admin”发出请求时只返回一组JSON。这对于您当前的服务器端路由不太合适,它呈现并返回一组HTML,而不是一个对象或数组

根据我的经验,当您使用主干网创建一个单页Web应用程序时,您在客户端执行所有HTML,只需使用服务器发送数据。我想您可以将主干网与服务器端渲染结合使用,但对我来说,这有点像是用螺丝刀敲钉子


希望这能有所帮助!

我编辑我的帖子是为了说明,最终目标是创建一个受密码保护的部分,将其与核心应用程序分离对我来说是有意义的,因此为什么我尝试在/admin而不是/#admin上呈现模板。这样做有意义吗?Orze说的。主干不会在#之前查看任何内容,等等浏览器永远不会将#发送到服务器。您可以让服务器上的/admin呈现一个页面,用javascript将路由设置为#什么?