【问题标题】:Not understanding how Backbone works不了解 Backbone 的工作原理
【发布时间】:2014-03-04 07:00:49
【问题描述】:

我是 Backbone 的新手。我正在创建一个由 2 个视图组成的非常简单的项目并让它工作。但是很难理解它在幕后的工作。

考虑一下:

  1. 我有两个视图:加载应用程序时将显示第一个视图(这将显示从模板获取的按钮)。在第一个视图中单击按钮时,将呈现第二个视图,显示一些虚拟文本(同样来自模板)。

  2. 我没有在这个应用程序中使用任何模型/集合。

  3. 所有文件都存储在本地 Web 服务器(Apache Tomcat)中。

场景

我加载应用程序。在控制台中,我看到所有文件都是使用 HTTP GET 获取的。我现在看到第一个 View 有一个按钮。我现在关闭 Web 服务器并清除浏览器缓存。在不刷新浏览器的情况下,我单击了按钮。我在第二个视图中看到了一些虚拟文本。

问题:

  1. 当应用程序加载时,所有 JS/HTML 文件将存储在哪里。?因为我看到 Backbone 是客户端 MVC,在我的情况下不会有任何服务器调用。浏览器将如何呈现不同的视图(所有信息都必须存储在某个地方,对吗?)。

  2. 我认为我的第一个问题的答案是浏览器缓存。但是考虑到上面的场景,我是怎么在清除缓存后看到第二个视图的呢?

感谢您花时间阅读这么长的问题。

注意:没有发布任何代码,因为我对代码没有任何问题。

【问题讨论】:

    标签: javascript backbone.js model-view-controller


    【解决方案1】:

    您的应用程序存储在内存中并操纵文档对象模型 (DOM) 以创建新的 HTML 以显示(请参阅 https://developer.mozilla.org/en/docs/DOM)。通过修改 DOM,您可以更改用户看到的内容。

    如果您考虑“正常”编程,每次将数据放入数组时,它都不会写入磁盘:它存储在 RAM 中,您可以使用我们称为数组的方便抽象来访问它(但是只是 RAM 中的一个位序列)。

    同样的事情发生在客户端应用程序中:每次你做某事时,它不一定会被持久化(即发送到服务器):事情可以存储在内存中,我们使用一种叫做 DOM 的方便抽象来操纵这些东西而不会发疯。

    浏览器缓存(顾名思义)是一个缓存:浏览器​​首先在其中查找内容以节省时间,否则会“正常”获取数据。想想做一个三明治:如果你还饿,你会省掉刀、面包等。想着“也许我很快会再做一个”。这样,如果您确实想要另一个三明治,您将节省时间,因为一切都为您准备好了。

    但是,如果您想制作三明治并且刀和面包还没有放在外面,没问题:您只需将它们从橱柜中取出即可。它不会阻止你吃三明治。浏览器缓存的工作方式相同...

    希望这会有所帮助!

    【讨论】:

    • 喜欢三明治的比喻!
    【解决方案2】:
    1. 文件存储在内存中,主要是您请求的 javascript 代码在您执行之前将被暂停,执行时它将操纵 DOM 并呈现适当的视图。

    2. 浏览器缓存的工作方式不同,假设您再次刷新浏览器(如果您没有像以前那样清理缓存)您会注意到应用程序的加载速度比以前更快,因为浏览器会加载文件存储在缓存中,而不是等待服务器响应。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-20
      • 2012-12-11
      • 2011-02-18
      • 2018-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多