javascript - 不了解 Backbone 的工作原理

标签 javascript backbone.js model-view-controller

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

考虑一下:

  1. 我有两个 View :加载应用程序时将显示第一个 View (它将显示从模板获取的按钮)。单击第一个 View 中的按钮后,将渲染第二个 View ,显示一些虚拟文本(再次从模板中获取)。

  2. 我没有在此应用中使用任何模型/集合。

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

场景

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

问题:

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

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

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

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

最佳答案

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

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

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

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

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

希望这有帮助!

关于javascript - 不了解 Backbone 的工作原理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22165072/

相关文章:

javascript - 为什么我不能在 JavaScript 中交换 2 个变量?

javascript - 页脚在中间加载然后粘在底部

javascript - asp.net 无法加载 css3 派

javascript - 有没有简单的方法来刷新 Marionette 中的区域?

javascript - 主干JS模型: Hiding a dropdown

javascript - 使用 Jasmine 测试主干模型

Javafx/FXML : conflict between initialize() method and FXML Loader:Initialize: NullPointerException, FXML.LoadException

javascript - 问题用 Angular 划分每个模块的路线

javascript - 在真正的 MVC(桌面)应用程序中单例 View 有什么好处?

javascript - 销毁 jPlayer 实例