AngularJS延迟加载html template


Posted in Javascript onJuly 27, 2016

当使用AngularJs中的routes/views模式建立大型网站或者应用的时候,把所有的自定义文件,如controllers和template等在初始化时全部加载进来,不是一个好的办法。最好的方式是,初始化时仅仅加载所需要的文件。这些文件可能会依赖一个连接或者多个文件,然而它们仅仅被特定的route所使用。当我们切换route时,未被加载的文件将会按需加载。这不但能提高初始化页面的速度,而且可以防止带宽浪费。

网上大部分文章都在讲通过$routeProvider以及第三方服务对controller的延迟加载,譬如:按需加载 AngularJS 的 Controller 就讲解的很详细。但是,很少有关于用$stateProvider对controller、html/template的延迟加载的文章。尽管对查看了$stateProvider相关的很多源代码,虽然解决了html/template的延迟加载问题,但是依然没有解决controller的延迟加载问题, 遗憾。由于时间问题,先将调查结果整理一下,等以后继续调查。

关于html/template的延迟加载,需要将html文件与home page文件放置于不同目录,否则会被自动加载进去。同样,也不能用templateUrl进行文件指定,否则也会被自动加载进去。 $stateProvider.state 的 template属性支持字符串值和函数,所以可以定义一个函数进行html文件的加载并缓存,防止重复加载文件。本想controller做同样处理,可惜报找不到controller函数定义,尝试很多方法都无效,等以后研究源代码看看漏掉了什么。直接上代码,逻辑不复杂,就不多??铝恕?br />

// 记录加载过的html以及controller,防止重复网络加载
$ionic.files = {html: {}, controller: {}};
// 声明延迟加载html方法
$ionic.getHtml = function getHtml(name) {
if (!$ionic.files.html[name]) {
// 同步ajax请求加载html,并缓存
$ionic.files.html[name] = jQuery.ajax({url: 'views/' + name + ".html", async: false}).responseText;
}
return $ionic.files.html[name];
}
// 声明延迟加载js方法 function resolveController(name) {
// var fn = $.getScript('assets/controller/' + name + '.js');
jQuery.ajax({"url": 'assets/controller/' + name + '.js', "dataType": "script", "async": false});
// console.log("load " + name);
return name;
} 
$stateProvider.state('login', {
url : "/login",
controller : resolveController("loginController"), 
template : function() { return $ionic.getHtml("login"); }
});

以上所述是小编给大家介绍的AngularJS延迟加载html template的全部叙述,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JSON 数据格式介绍
Jan 13 Javascript
jQuery控制输入框只能输入数值的小例子
Mar 20 Javascript
JS刷新当前页面的几种方法总结
Dec 24 Javascript
JS获取节点的兄弟,父级,子级元素的方法
Jan 09 Javascript
javaScript 页面自动加载事件详解
Feb 10 Javascript
jQuery处理json数据返回数组和输出的方法
Mar 11 Javascript
详谈LABJS按需动态加载js文件
May 07 Javascript
QQ登录背景闪动效果附效果演示源码下载
Sep 22 Javascript
体验jQuery和AngularJS的不同点及AngularJS的迷人之处
Feb 02 Javascript
jQuery 点击获取验证码按钮及倒计时功能
Sep 20 jQuery
layui点击数据表格添加或删除一行的例子
Sep 12 Javascript
彻底搞懂并解决vue-cli4中图片显示的问题实现
Aug 31 Javascript
AngularJS入门教程之控制器详解
Jul 27 #Javascript
JavaScript中误用/g导致的正则test()无法正确重复执行的解决方案
Jul 27 #Javascript
AngularJS入门教程之Scope(作用域)
Jul 27 #Javascript
AngularJS入门之动画
Jul 27 #Javascript
JSON格式的时间/Date(2367828670431)/格式转为正常的年-月-日 格式的代码
Jul 27 #Javascript
获取JS中网页各种高宽与位置的方法总结
Jul 27 #Javascript
AngularJS 模型详细介绍及实例代码
Jul 27 #Javascript
You might like
php json_encode与json_decode详解及实例
2016/12/13 PHP
PHP实现上传多文件示例代码
2017/02/20 PHP
php获取是星期几的的一些常用姿势
2019/12/15 PHP
基于PHP实现用户在线状态检测
2020/11/10 PHP
jquery遍历input取得input的name
2009/04/27 Javascript
formValidator3.3的ajaxValidator一些异常分析
2011/07/12 Javascript
JScript分割字符串示例代码
2013/09/04 Javascript
两个多选select(multiple左右)添加、删除选项和取值实例
2014/05/12 Javascript
Bootstrap整体框架之CSS12栅格系统
2016/12/15 Javascript
jQuery实现Table表格隔行变色及高亮显示当前选择行效果示例
2017/02/14 Javascript
vue js秒转天数小时分钟秒的实例代码
2018/08/08 Javascript
在vue.js中使用JSZip实现在前端解压文件的方法
2018/09/05 Javascript
VUE v-model表单数据双向绑定完整示例
2019/01/21 Javascript
微信小程序开发技巧汇总
2019/07/15 Javascript
vue实现select下拉显示隐藏功能
2019/09/30 Javascript
node.js制作一个简单的登录拦截器
2020/02/10 Javascript
python实现对一个完整url进行分割的方法
2015/04/29 Python
速记Python布尔值
2017/11/09 Python
基于PyQt4和PySide实现输入对话框效果
2019/02/27 Python
Django项目中使用JWT的实现代码
2019/11/04 Python
如何基于python操作json文件获取内容
2019/12/24 Python
文件上传服务器-jupyter 中python解压及压缩方式
2020/04/22 Python
利用Python实现Json序列化库的方法步骤
2020/09/09 Python
css3学习心得分享
2013/08/19 HTML / CSS
优衣库美国官网:UNIQLO美国
2018/04/14 全球购物
Lovedrobe官网:英国领先的大码服装品牌
2019/09/19 全球购物
全球领先的在线cosplay服装商店:RoleCosplay
2020/01/18 全球购物
应届生妇产科护士求职信
2013/10/27 职场文书
艾滋病宣传活动总结
2014/05/08 职场文书
公务员诚信承诺书
2014/05/26 职场文书
个人作风建设自查报告
2014/10/22 职场文书
西湖英语导游词
2015/02/06 职场文书
运动与健康自我评价
2015/03/09 职场文书
遗愿清单观后感
2015/06/09 职场文书
vue响应式原理与双向数据的深入解析
2021/06/04 Vue.js
Spring依赖注入多种类型数据的示例代码
2022/03/31 Java/Android