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 相关文章推荐
JS+ACTIVEX实现网页选择本地目录路径对话框
Mar 18 Javascript
快速解决jQuery与其他库冲突的方法介绍
Jan 02 Javascript
使用jquery prev()方法找到同级的前一个元素
Jul 11 Javascript
JS简单计算器实例
Jan 20 Javascript
JavaScript中扩展Array contains方法实例
Aug 23 Javascript
JavaScript编程中的Promise使用大全
Jul 28 Javascript
全面解析Bootstrap中form、navbar的使用方法
May 30 Javascript
jQuery实现的简单拖拽功能示例
Sep 13 Javascript
JavaScript实现获取远程的html到当前页面中
Mar 26 Javascript
JavaScript Math对象和调试程序的方法分析
May 13 Javascript
原生js无缝轮播插件使用详解
Mar 09 Javascript
Node.js中出现未捕获异常的处理方法
Jun 29 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
如何给phpcms v9增加类似于phpcms 2008中的关键词表
2013/07/01 PHP
php+memcache实现的网站在线人数统计代码
2014/07/04 PHP
php 反斜杠处理函数addslashes()和stripslashes()实例详解
2016/12/25 PHP
JavaScript 实现模态对话框 源代码大全
2009/05/02 Javascript
ExtJs3.0中Store添加 baseParams 的Bug
2010/03/10 Javascript
改进版通过Json对象实现深复制的方法
2012/10/24 Javascript
javascript获取鼠标位置部分的实例代码(兼容IE,FF)
2013/08/05 Javascript
JS数组去重与取重的示例代码
2014/01/24 Javascript
Android中的jQuery:AQuery简介
2014/05/06 Javascript
Jquery遍历Json数据的方法
2015/04/20 Javascript
js遮罩效果制作弹出注册界面效果
2017/01/25 Javascript
JS实现本地存储信息的方法(基于localStorage与userData)
2017/02/18 Javascript
关于jQuery EasyUI 中刷新Tab选项卡后一个页面变形的解决方法
2017/03/02 Javascript
纯原生js实现贪吃蛇游戏
2020/04/16 Javascript
使用JavaScript根据图片获取条形码的方法
2017/07/04 Javascript
node koa2实现上传图片并且同步上传到七牛云存储
2017/07/31 Javascript
Vue仿手机qq的实例代码(demo)
2017/09/08 Javascript
React Native基础入门之调试React Native应用的一小步
2018/07/02 Javascript
详解vue-cli中模拟数据的两种方法
2018/07/03 Javascript
vue 解决循环引用组件报错的问题
2018/09/06 Javascript
LayUi数据表格自定义赋值方式
2019/10/26 Javascript
python利用rsa库做公钥解密的方法教程
2017/12/10 Python
python使用matplotlib模块绘制多条折线图、散点图
2020/04/26 Python
Pycharm取消py脚本中SQL识别的方法
2018/11/29 Python
python获取时间及时间格式转换问题实例代码详解
2018/12/06 Python
Django 源码WSGI剖析过程详解
2019/08/05 Python
使用HTML和CSS实现的标签云效果(附demo)
2021/02/03 HTML / CSS
英国豪华家具和经典家居饰品购物网站:OKA
2020/06/05 全球购物
开办加工厂创业计划书
2014/01/03 职场文书
财务会计人员求职的自我评价
2014/01/13 职场文书
办公室岗位职责
2014/02/12 职场文书
HR求职自荐信范文
2014/06/21 职场文书
委托证明范本
2014/11/25 职场文书
党员倡议书
2015/01/19 职场文书
钢琴师观后感
2015/06/12 职场文书
Java9新特性对HTTP2协议支持与非阻塞HTTP API
2022/03/16 Java/Android