不了解Backbone如何工作

时间:2014-03-04 07:00:50

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

我是Backbone的新手。我正在创建一个非常简单的项目,包含2个视图并使其正常工作。但很难理解它在幕后的工作。

考虑一下:

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

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

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

  4. 方案

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

    问题:

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

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

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

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

2 个答案:

答案 0 :(得分:4)

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

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

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

浏览器缓存(顾名思义)是一个缓存:浏览器​​首先查找事物以节省时间,但否则“正常”获取数据。想想制作一个三明治:如果你还是饿了,你会留下刀子,面包等等,想着“也许我会尽快制作另一个”。这样,如果你想要另外一个三明治,你会节省时间,因为一切都准备好了。

但是如果你想做一个三明治而且刀和面包还没有坐下来,没问题:你只是把它们从柜子里拿出来。它不会阻止你吃三明治。浏览器缓存的工作方式相同......

希望这有帮助!

答案 1 :(得分:0)

  1. 这些文件存储在内存中,主要是你请求的javascript代码在你执行之前一直处于暂停状态,执行时它会操纵DOM并呈现相应的视图。

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