AngularJS ng-template寄宿方式用法分析


Posted in Javascript onNovember 07, 2016

本文实例讲述了AngularJS ng-template寄宿方式用法。分享给大家供大家参考,具体如下:

如果你是一个angular的开发者的话,对于ng-html2js你应该 很熟悉。对于angular的指令,我们经常需要定义模板( directive template/templateUrl),你可以选择讲html page 放在真正的的web容器中寄宿,也可以选择angular的ng-template 放在view的page之上,抑或也可以讲html打成一个js文件和directive 的js文件合并在一起发布。

对于直接寄宿在web容器.

这很简单,直接放在jetty,tomcat,iis, 抑或node express public目录下。这里没什么可以多说的,所以我们跳过。

angular ng-template模板:

代码如下:

<script type="text/ng-template" id="/tpl.html">
   Content of the template.
</script>

这将会在angular的compile时候解析,angular将会把它放在angular的$templateCache 中。

对于$templateCache,如其名 这是angular对模板的缓存的service。在启用了$templateCache的$http ajax请求, angular将会首先在$templateCache中查找是否有对此url的缓存:

$templateCache.get('templateId.html')

如果存在缓存,着angular将会直接用缓存中获取,并不会在发送一次ajax。 对于所有的指令和模板angular默认启用了templateCache。

这在于angular所处理的模式开发很有关系的。我们经常提到的SPA(single page application) 我们把view的显示处理等表现逻辑推到了前段,而后端提供只与数据有关的soap/restful service 这样对于一个应用程序业务逻辑来说不变的是处理数据的业务逻辑,这份逻辑你可以共享在不管前端是mobile app 或者是浏览器,或者winform gui的图形化程序,因为对于同一个业务这是不变的。将view的分离推到各自的客户端 将是更好的解决方案。

回到angular $templateCahce,对于一个应用程序view的分离,之后在对于当前的应用程序平台,html/js/css 这类资源是静态的,最好是不变的,那么你可以自由的缓存在客户端,减少服务器的交互,以及为了更大的性能追求,我们 可以把这类静态资源放在Nginx这里反向代理或者CDN上,让我们的程序获取更大的性能和扩展空间。

回到angular的ng-html2js:

有了上边对于$templateCache的理解,那你应该很容易理解html2js的方式了,与ng-template不同的 是ng-template是angular在compile的时候自动加入$templateCache的,html2js是我们在开发 时候利用build自己放入$templateCache。

angular.module('myApp', [])
 .run(function($templateCache) {
   $templateCache.put('templateId.html',
     'This is the content of the template'
   );
 });

形如上面的输出,将html文件打成一个js文件。

这你也许在angular的单元测试karma unit test中看见过, karma-ng-html2js-preprocessor ,还有如果你也希望在build时候做到如此,那么你可以使用grunt plugin grunt-html2js.

但使用grunt plugin的前提是你在你的项目中引入的grunt build的work flow,那么你可以在gruntfile.js中几行代码轻松的搞定。但是如果 你和我一样使用的是java的maven或者是gradle 作为build,那么你可以尝试博主的maven plugin  nghtml2js. 使用方式如下:

<plugin>
  <groupId>com.github.greengerong</groupId>
  <artifactId>nghtml2js</artifactId>
  <version>0.0.3</version>
  <configuration>
    <module>demo.template</module>
    <html>${project.basedir}</html>
    <extensions>
      <param>tpl</param>
      <param>html</param>
    </extensions>
  </configuration>
  <executions>
    <execution>
      <id>nghtml2js</id>
      <phase>generate-resources</phase>
      <goals>
        <goal>run</goal>
      </goals>
    </execution>
  </executions>
</plugin>

希望本文所述对大家AngularJS程序设计有所帮助。

Javascript 相关文章推荐
JavaScript的面向对象(二)
Nov 09 Javascript
用CSS+JS实现的进度条效果效果
Jun 05 Javascript
jQuery源码分析之Event事件分析
Jun 07 Javascript
浅谈layer的iframe弹窗给里面的标签赋值的问题
Nov 10 Javascript
详解.vue文件中监听input输入事件(oninput)
Sep 19 Javascript
基于vue.js无缝滚动效果
Jan 25 Javascript
Layui数据表格之获取表格中所有的数据方法
Aug 20 Javascript
详解easyui 切换主题皮肤
Apr 04 Javascript
JavaScript 性能提升之路(推荐)
Apr 10 Javascript
如何使用CSS3+JQuery实现悬浮墙式菜单
Jun 18 jQuery
JS遍历树层级关系实现原理解析
Aug 31 Javascript
JavaScript中clientWidth,offsetWidth,scrollWidth的区别
Jan 25 Javascript
easyui messager alert 三秒后自动关闭提示的实例
Nov 07 #Javascript
基于bootstrap-datetimepicker.js不支持IE8的快速解决方法
Nov 07 #Javascript
AngularJS 应用身份认证的技巧总结
Nov 07 #Javascript
AngularJS解决ng界面长表达式(ui-set)的方法分析
Nov 07 #Javascript
基于KO+BootStrap+MVC实现的分页控件代码分享
Nov 07 #Javascript
浅谈EasyUi ComBotree树修改 父节点选择的问题
Nov 07 #Javascript
EasyUI 中combotree 默认不能选择父节点的实现方法
Nov 07 #Javascript
You might like
php strcmp使用说明
2010/04/22 PHP
PHP开发规范手册之PHP代码规范详解
2011/01/13 PHP
PHP获取文件后缀名的三个函数
2012/10/15 PHP
CodeIgniter框架中_remap()使用方法2例
2014/03/10 PHP
yii实现创建验证码实例解析
2014/07/31 PHP
在Win7 中为php扩展配置Xcache
2014/10/08 PHP
php析构函数的简单使用说明
2015/08/24 PHP
php实现的单一入口应用程序实例分析
2015/09/23 PHP
Zend Framework教程之Application和Bootstrap用法详解
2016/03/10 PHP
PHP开发中解决并发问题的几种实现方法分析
2017/11/13 PHP
PHP使用POP3读取邮箱接收邮件的示例代码
2020/07/08 PHP
一个很酷的拖动层的js类,兼容IE及Firefox
2009/06/23 Javascript
jquery pagination插件实现无刷新分页代码
2009/10/13 Javascript
js中scrollHeight,scrollWidth,scrollLeft,scrolltop等差别介绍
2012/05/16 Javascript
javascript中input中readonly和disabled区别介绍
2012/10/23 Javascript
JavaScript关闭当前页面(窗口)不带任何提示
2014/03/26 Javascript
JS 在指定数组中随机取出N个不重复的数据
2014/06/10 Javascript
javascript强制点击广告的方法
2015/02/06 Javascript
JavaScript 继承详解(六)
2016/10/11 Javascript
详解Vue2.0之去掉组件click事件的native修饰
2017/04/20 Javascript
ionic2屏幕适配实现适配手机、平板等设备的示例代码
2017/08/11 Javascript
zTree异步加载展开第一级节点的实现方法
2017/09/05 Javascript
浅谈小程序 setData学问多
2019/02/20 Javascript
koa-passport实现本地验证的方法示例
2020/02/20 Javascript
利用原生JS实现欢乐水果机小游戏
2020/04/23 Javascript
Openlayers测量距离与面积的实现方法
2020/09/25 Javascript
Javascript节流函数throttle和防抖函数debounce
2020/12/03 Javascript
[02:12]2019完美世界全国高校联赛(春季赛)报名开启
2019/03/01 DOTA
[57:36]DOTA2-DPC中国联赛 正赛 SAG vs CDEC BO3 第三场 2月1日
2021/03/11 DOTA
Python实现接受任意个数参数的函数方法
2018/04/21 Python
基于Python3.6+splinter实现自动抢火车票
2018/09/25 Python
python循环嵌套的多种使用方法解析
2019/11/29 Python
为什么group by 和order by会使查询变慢
2014/05/16 面试题
司机职责范本
2014/03/08 职场文书
法律专业大学生职业生涯规划书:向目标一步步迈进
2014/09/22 职场文书
计划生育证明格式及范本
2014/10/09 职场文书