【问题标题】:Understanding the job of routes in Node.js (api) when utilizing Backbone.js (frontend)在使用 Backbone.js(前端)时了解 Node.js(api)中路由的工作
【发布时间】:2013-05-14 14:34:02
【问题描述】:

我刚刚开始学习使用 Backbone.js。以前我使用了一个构建在 Node.js 之上的 Web 框架来处理所有的路由和响应。有了 Backbone,就有了 SPA(单页应用程序)的可能性。

我相信我的问题与这个有关:Account for Backbone.js pushState routes with node.js express server?(express.js + 主干的问题)。

其中给出的代码:

app.get('/', function(req, res) {
    // Trigger the routes 'domain.com' and 'domain.com/#/about'
    // Here render the base of your application
});

app.get('/about', function (req, res) {
    // Trigger the toure 'domain.com/about'
    // Here use templates to generate the right view and render
});

从使用 node web 框架开始,我通常不使用 json 请求来获取数据,而是在路由关闭中查询数据库。 node.js 的工作(在 node+backbone 环境中)仅仅是提供主干页面而不是查询数据库吗?所以它只是将客户端定向到指定的backbone.js模板而不传递任何数据,然后backbone接管?

例如,如果我想显示所有书籍模型(example.com/books),我是否只需通过节点将用户发送到该 url,然后骨干网将负责查询数据库(当然是模型)?这段代码会是什么样子?

我见过的大多数主干教程都处理了外部 api。谢谢!

【问题讨论】:

    标签: node.js backbone.js routing routes views


    【解决方案1】:

    所以对于单页应用,我们需要考虑两种类型的页面:全页加载和单页路由。完整页面加载是用户首次访问您的网站时的入口点,但您还应该考虑到您网站内的 URI 的深层链接以及当前 URI 的浏览器刷新。

    简单的方法

    • 不要在你的 node.js 路由中查询数据库
    • 总是返回“起始页”HTML
    • 在浏览器中,主干路由器将初始化您的视图/集合/模型,然后您 fetch 从服务器获取您需要的数据并在浏览器中呈现页面。

    先搞清楚它的来龙去脉,因为总的来说它是最简单的。它确实会导致感知性能延迟,因为在第二次往返服务器以加载数据完成之前,该页面将无法使用。此外,起始页 HTML 可能没有有趣的 SEO 搜索引擎爬虫数据这一事实可能对您来说是一个重要因素(或不是)。

    服务器端引导

    所以 Jeremy Ashkenas 的官方指导是,对于整页加载,服务器应该:

    • 根据路由和任何请求参数查询数据库
    • 为该页面生成完整的 HTML 文档,包括呈现的视图
    • 在 HTML 文档中嵌入必要的 JSON 数据,并在主干应用程序加载到客户端时使用它来引导主干模型
      • 如何将引导的主干对象连接到 DOM(留给读者练习)

    这里的主要优势是感知性能,但这也有助于 SEO(这对您来说可能很重要,也可能无关紧要)。但是,这意味着存在一个相当复杂的框架,使您能够在 node.js 和浏览器中呈现相同的 HTML,而主干本身不提供。有一个名为 rendr 的项目实现了跨浏览器和节点的统一 HTML 渲染的概念,您可以考虑使用或至少研究源以获得灵感。

    【讨论】:

      猜你喜欢
      • 2019-02-13
      • 1970-01-01
      • 2013-11-14
      • 2016-12-31
      • 2014-10-08
      • 2011-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多