javascript - AngularJS:什么是 $templateCache?

标签 javascript angularjs templates caching partials

在分析大型 AngularJS 应用程序时,我开始跟踪 $templateCache。

https://docs.angularjs.org/api/ng/service/ $templateCache

这个物体是什么?它是否存储存储在磁盘上的部分内容或路由中最终渲染的 HTML?

我在我的 Controller 中添加了一些类似这样的代码,以确保它不会保留任何内容:

$scope.$on('$destroy', function cleanup() { $templateCache.removeAll(); });

编辑:我研究这个问题的原因是单个(不是每个) Controller 正在加载一个大的部分,其中有多个循环,根据用户输入,它可能约为 100 个输入大田<select>语句和许多自定义指令。客户要求以这种方式进行,我想确保所有这些都在路由过程中得到处理。

为了澄清这个问题:$templateCache 仅存储磁盘上出现的部分,没有存储路由或渲染信息?

最佳答案

默认情况下,加载模板时,Angular 会查找 $templateCache 内部,并在无法在 $templateCache 本地找到模板时通过 XHR 获取模板。 当 XHR 请求很慢或者我们的模板足够大时,它可能会对最终用户的体验产生严重的负面影响。 我们可以通过将模板缓存加载到 JavaScript 文件中并将 JavaScript 文件与应用程序的其余部分一起发送来伪造模板缓存加载,而不是获取模板 XHR。

示例:

angular.module('myApp')
.run(['$templateCache', function($templateCache) {
$templateCache.put('xyz.html', ...);
}]);

因此,除非您非常确定要从 $templateCache 中删除缓存的模板,否则不要这样做。

关于javascript - AngularJS:什么是 $templateCache?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25364568/

相关文章:

javascript - 将 JSON 数据转换为 Excel 文件 在 Javascript 中下载

javascript - --如何访问此顶级文件中的容器/存储?

javascript - 使用 Javascript 对数据库进行用户注册和身份验证

JavaScript 创建对象数组

c++ - 我如何声明一个放在 main 之后的类模板?

javascript - Mongoose "find"返回一个空数组

javascript - JS 类属性验证函数返回 bool 值?

javascript - 将 angular js 服务/工厂注入(inject) Jasmine

C++:为什么这个 constexpr 模板函数会在 VS2017 中导致内部错误?(在 gcc 中是可以的)

c++ - 函数指针 vs 函数作为模板非类型参数