gpt4 book ai didi

javascript - 将 Node 路由与 Backbone 路由绑定(bind)

转载 作者:太空宇宙 更新时间:2023-11-04 01:05:38 26 4
gpt4 key购买 nike

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

这是该项目的github:https://github.com/quantumlicht/collarbone/tree/master/q-trivia_stacked

我在服务器上创建了一条路由 server/routes/blog_admin.js这服务于/admin,模板包含一个带有 id 的 div,通常包含主干 View ,但它不包含,这就是我试图找出答案的原因,但我无法在网络上找到示例。

在我的主干路由器文件中,我定义了管理路由来提供正确的 View ,但只有当我转到/#admin 时它才会执行此操作。

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

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

最佳答案

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

通常在 Backbone Web 应用程序中,您将在路由器中注册一个路由函数,该函数创建模型和 View 。该模型有一个名为 url 的属性,它指向服务器上的某个位置; Backbone 获取存储在该位置的数据并将其填充到您的模型中。然后,您的 View 使用该模型的内容在屏幕上呈现一些 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>"));
}
});

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

根据我的经验,当您使用 Backbone 创建单页 Web 应用程序时,您将在客户端执行所有 HTML 操作,然后仅使用服务器向其发送数据。我想您可以将 Backbone 与服务器端渲染结合使用,但对我来说,这感觉有点像用 Screwdriver 敲钉子。

希望这有帮助!

关于javascript - 将 Node 路由与 Backbone 路由绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23330739/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com