我认为我对 AngularJS 中的路由以及 SPA 中的路由如何工作有一个严重的误解。
我曾想过我的简单路由:
$routeProvider
.when('/home', {
templateUrl: 'app/views/home.html',
controller: 'homeController'
})
.when('/login', {
templateUrl: 'app/views/login.html',
controller: 'loginController',
})
我原以为当我进入/login
时,Angular会进行一个ajax调用来获取它需要的html页面。但是,我没有看到任何通过 fiddler 进行的调用,这确实没有意义。
但我似乎无法在 Chrome 开发者工具中找到这些页面的位置,也无法通过 google 找到正确的单词组合来获得合适的答案。有人可以帮我解决这个问题吗?
如果有帮助,这是我的布局页面的正文:
<body ng-cloak>
<nav class="navbar navbar-default navbar-fixed-top" role="navigation">
...nav stuff
</nav>
<br/><br/>
<div class="container body-content" ng-view></div>
<!-- 3rd party scripts -->
<script src="Scripts/angular.js"></script>
<script src="Scripts/angular-local-storage.min.js"></script>
<script src="Scripts/jquery-2.1.1.min.js"></script>
<script src="Scripts/bootstrap.min.js"></script>
<script src="Scripts/angular-route.min.js"></script>
<!-- app main -->
<script src="app/app.js"></script>
<!-- controllers -->
<script src="app/controllers/homeControllers.js"></script>
<script src="app/controllers/loginController.js"></script>
<!-- services -->
<script src="app/services/modelErrorService.js"></script>
<script src="app/services/authInterceptorService.js"></script>
<script src="app/services/authService.js"></script>
</body>
编辑
抱歉,我可能不清楚。该代码运行良好。我的问题是,当 Angular 将您路由到新页面时,它从哪里加载该 html 模板?是一开始就全部传递给客户端,还是回调给服务器?如果在客户端,存储在哪里?
最佳答案
如果templateUrl
指定后,Angular 将查看 $templateCache
查找模板并从那里加载它(如果找到)。如果没有找到,它将尝试从服务器获取它,并将其存储在 $templateCache
中。以便将来访问并将其加载到 View 中。
模板可以放入Angular的$templateCache
中
- 第一次从服务器获取时
- 将它们放置在 HTML 中的
<script type="text/ng-template"></script>
中元素 - 通过编程方式将它们放入
$templateCahce
(出于任何原因:性能、离线访问等)
关于javascript - 单页应用程序查看位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24677408/