预加载路线中使用的AngularJS部分?

预加载路线中使用的AngularJS部分?,angularjs,angularjs-routing,Angularjs,Angularjs Routing,问题:预加载路由模板中使用的.ng文件的最佳方式和时间是什么 在迄今为止的研究中,我发现了以下答案: 使用Angular的脚本指令。 问题:我的内容无法作为文本字符串加载,但需要从服务器获取。换句话说,我有一个.ng文件作为我的分部文件,所以我不能这样做 我的内容必须保留在服务器上的.ng文件中并被提取 使用$templateCache.put将模板文本放入缓存中。与上述问题相同 使用$http加载.ng文件。这是因为它不是一个字符串文字,但我正在努力寻找执行此操作的最佳时间,以便它不会阻塞(

问题:预加载路由模板中使用的.ng文件的最佳方式和时间是什么

在迄今为止的研究中,我发现了以下答案:

  • 使用Angular的脚本指令。 问题:我的内容无法作为文本字符串加载,但需要从服务器获取。换句话说,我有一个.ng文件作为我的分部文件,所以我不能这样做

    我的内容必须保留在服务器上的.ng文件中并被提取
  • 使用$templateCache.put将模板文本放入缓存中。与上述问题相同

  • 使用$http加载.ng文件。这是因为它不是一个字符串文字,但我正在努力寻找执行此操作的最佳时间,以便它不会阻塞(实现其异步,但仍然是)

  • 为了避免您推荐我已经看过的资源,我阅读了以下内容:


    可能使用2和3的组合

    正如您所说,$http是异步的,那么为什么不在应用程序加载后将每个部分放入templateCache呢

    例如:

    var myApp = angular.module('myApp', []);
    myApp.run(function($http, $templateCache) {
      var templates = ['template1.ng', 'template2.ng'];
    
      angular.forEach(templates, function(templateUrl) {
        $http({method: 'GET', url: templateUrl}).success(function(data) {
          $templateCache.put(templateUrl, data);
        });
      });
    });
    

    我从来没有这样做过,当然也没有测试过,但想法是存在的。

    对于视图来说,这是一个非常奇怪的扩展(.ng)。服务器是否将
    .ng
    文件输出到写入初始页面加载的角度模板脚本标记中?如果您要使用此路径,“$http.get(templateUrl)”将同样有效,因为Angular将缓存XHR,当您单击触发路由更改和模板加载的链接时,它不会加载。@eb80我不明白您在这里的意思。你的意思是,在你点击某个东西之前,$http请求不会启动吗?@Daiwei-否。我的意思是,我们不需要“.success…”位,因为Angular已经缓存了响应。$http将在页面加载之前触发。。。我是说我们只需要$http.get(templateUrl),我们不需要“.success…”位