我最近一直在尝试使用breathjs,并考虑将它用于个人和工作中的一些项目,因为我喜欢它。我知道现在风靡一时的是单页应用程序,我明白了,但是假设您不想引入新的路由框架并且只使用 .NET MVCs 默认路由引擎就很舒服。每次有 POST/Redirect 时,您都将失去针对元数据和其他实体的微风实体管理器的客户端缓存功能。
其中一个问题是,对于每个发出的请求,我们都会收集大量元数据 (.5mb)。现在,如果在重定向之前客户端有任何其他请求,则该元数据被缓存并且一切都很好。除了我还将缓存在实体管理器中的静态列表之外,我试图避免下载每个视图的元数据。我知道可以通过制作更小的对象图来优化元数据,但我们不要专注于此。
我想出的一件事是将元数据存储在 localStorage 中,然后在页面加载时检索它。
function exportMetadata() {
var metadata = emanager.metadataStore.exportMetadata();
window.localStorage.setItem('somename', metadata);
}
function importMetadata() {
var metadata = window.localStorage.getItem('somename');
var mstore = new breeze.MetadataStore();
mstore.importMetadata(metadataFromStorage);
manager.metadataStore = mstore;
}
虽然这有效(并且适用于具有不同语法的静态列表),但它感觉很hacky并且似乎违背了该库的使用方式。我不禁认为 BreezeJS 与 SPA 架构相结合,可以利用它所写的所有功能。也许我想错了?有没有关于如何在 SPA 之外使用 BreezeJS 的建议或示例?