`

HTML 5标准中最新引入的template标签介绍

阅读更多
现在,W3C没闲着,2013年5月,新的标准中,又引入了新的标签template模板,具体
标准见:https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/templates/index.html#template-element
  下面综合进行小结下,供各位学习

   首先,服务端的模板是不少了,大家也用的不少,现在其实就是客户端的模板,先看例子:

 

function supportsTemplate() {
  return 'content' in document.createElement('template');
}

if (supportsTemplate()) {
  //支持标签
} else {
  
//不支持

  上面代码是监测浏览器是否支持这标签了。目前只有chrome 26以上才支持这个标签;

<template id="hhhhold-template">
  <img src="" alt="random hhhhold image">
  <h3 class="title"></h3>
</template>

<script>
  var template = document.querySelector('#hhhhold-template');
  template.content.querySelector('img').src = 'http://hhhhold.com/350x200';
  template.content.querySelector('.title').textContent = 'Random image from hhhhold.com'
  document.body.appendChild(template.content.cloneNode(true));
</script>


   template标签中,给出了模板id,其中这里定义了空的图片,因为这些都是在
运行时动态指定的,
  例子中的<SCRIPT>部门,就是通过template.content.querySelector去动态指定
填充模板的内容,记得最后要用:
   document.body.appendChild(template.content.cloneNode(true));才算激活模板;

   <template>标签可以放置在<head>,<body>或者<frameset>当中,也可以放在象table,tr等标签中,比如
  

<table>
<tr>
  <template id="cells-to-repeat">
    <td>some content</td>
  </template>
</tr>
</table>


    但模板暂时还不支持嵌套。
再来个复杂点的例子:
  
 
<button onclick="useIt()">Use me</button>
<div id="container"></div>
<script>
  function useIt() {
    var content = document.querySelector('template').content;
   
    var span = content.querySelector('span');
    span.textContent = parseInt(span.textContent) + 1;
    document.querySelector('#container').appendChild(
        content.cloneNode(true));
  }
</script>

<template>
  <div>Template used: <span>0</span></div>
  <script>alert('Thanks!')</script>
</template>

   点按钮,就会每次在模板中,不断显示template used:数字 (数字不断+1),
例子其实也很容易理解。
   
更详细的介绍可以参考:
http://www.html5rocks.com/en/tutorials/webcomponents/template/?redirect_from_locale=zh
 
2
1
分享到:
评论

相关推荐

    前端HTML模板解析引擎domTemplate.js.zip

    domTemplate.js 模板引擎是通过在标签中添加自定义属性,实现动态模板功能,当没有引入domTemplate脚本, 则自定义标签属性不会被浏览器解析,不会破坏原有静态效果,当引入domTemplate脚本,模板引擎回去解析这些...

    Angular2学习教程之TemplateRef和ViewContainerRef详解

    TemplateRef 在介绍 TemplateRef 前,我们先来了解...在 HTML5 标准引入 template 模板元素之前,我们都是使用 [removed] 标签进行客户端模板的定义,具体如下: [removed] &lt;span&gt;I am span in mock template &lt;/s

    wxParse-master.zip

    // 引入模板 你的路径/wxParse/wxParse.wxml"/&gt; //这里data中article为bindName 在需要的地方使用: &lt;template is="wxParse" data="{{wxParseData:article.nodes}}"/&gt; 其中article是后台html值的变量名 ...

    vue组件讲解(is属性的用法)模板标签替换操作

    vue中is的属性引入是为了解决dom结构中对放入html的元素有限制的问题,譬如ul里面要接上li的标签,引入is的属性后,你完全可以写成这样 &lt;div class=language-html&gt; &lt;li is=row&gt;&lt;/li&gt; &lt;/div&gt; 这样会保证dom...

    cms后台管理

    5.classes下有四个文件,手动烤到myeclipse项目src根目录下中 6.将服务器上jeecms项目删掉,发布新建的jeecms项目。 三 首页的加载过程 在浏览器中输入http://localhost:8080/jeecms,回车 首先进入配置文件web....

    支持相对路径的模板引擎Gotemplate.zip

    基于官方 text/template 和 html/template 的模板引擎. Template 通过几种惯用方式组合, 为模板提供简洁的使用方式.特性: 模板名仿效 URI 格式, 使用全路径名称命名. 模板名以 ".html" 结尾当作 HTML 模板处理,...

    解决vue+elementui项目打包后样式变化问题

    main.js中的引入顺序决定了打包后css的顺序,组件内的样式没有生效可能是被第三方组件样式覆盖了,所以把第三方组件放在前面引入,router放在后面引入,就可以实现组件样式在第三方样式之后渲染。 代码如下: main....

    vue.js实例对象+组件树的详细介绍

    **data:** 数据通过data引入到组件中 在组件中的data要以函数的形式返回数据,当不同的界面用了同一个组件时,才不会以为一个组件的值发生改变而改变其他页面的内容。 {{ }} 双括号语法里面放入数据的变量 组件注册...

    IBM WebSphere Portal门户开发笔记01

    5、JS 计算网页内容的宽与高 (浏览器的标准模式与怪异模式) 237 6、JS设置与查看网页的解析模式(值) 249 7、JS判断对象是否已经存在 249 8、CSS设置网页在IE下为灰色显示 250 9、HTML A链接CSS样式 251 10、CSS...

    vue-project-template

    vue项目脚手架 基于Vue-cli 4 图标使用说明 图标文件统一使用png格式 ...├── ├── static/ # 通过标签引入的静态资源 │ └── index.html # HTML 模板 ├── src/ # 源码目录 │ ├── assets/

    SpringBoot2整合thymeleaf3及thymeleaf3语法.md

    spring.thymeleaf.check-template-location=true spring.thymeleaf.suffix=.html spring.thymeleaf.encoding=UTF-8 spring.thymeleaf.content-type=text/html spring.thymeleaf.mode=HTML spring.thymeleaf.cache=...

    require.js 加载 vue组件 r.js 合并压缩的实例

    准备: ...Vue.extend({}) 定义组件 template data methods Vue.component(),注册组件的标签,标签在html中是一个挂载点 new Vue() 进行实例化 index.html // css引入 略 &lt;tq&gt;&lt;/tq&gt; &lt;tq-foo

    无名网站管理系统nameless CMS v1.1.rar

    采用当前最流行的系统设计理念,实现界面与程序100%分离,更换界面轻松自如。首页、栏目页、文档页均生成HTML静态页。大大节省服务器资源消耗...5、修改了模板标签的解析内核。生成静态时避免了1.0资源消耗过大的问题。

    Vue.js父与子组件之间传参示例

    例子:App.vue为父,引入componetA组件之后,则可以在template中使用标签(注意驼峰写法要改成componet-a写法,因为html对大小写不敏感,componenta与componentA对于它来说是一样的,不好区分,所以使用小写-小写...

    价值2000元的苹果cms电影网站后台带采集源码PHP,电影网站源码.rar

    home_include.html 全站公共引入文件 引入js、css样式,还有系统JS变量 home_head.html 全站头部 home_foot.html 全站尾部 home_gbook.html 留言本 home_comment.html 评论 label_ 开头的都是自定义页面 ...

    dreamweaver的各种组件

    Import Fireworks 对于您手中的FIREWORKS来说这是一个革命,它可以引入FIREWORKS生成的代码,并进一步改进代码! Last Updated 它可以插入网页的最新更新时间,但注意它存在一些BUGS(如2000年问题),如果可以的话...

    freemarker语法完整版

    parse=true 是否作为ftl语法解析,默认是true,false就是以文本方式引入.注意在ftl文件里布尔值都是直接赋值 的如parse=true,而不是parse="true" 用例 /common/copyright.ftl 包含内容 Ftl代码 Copyright ...

    苹果8XPC和手机二合一完整版

    home_include.html 全站公共引入文件 引入js、css样式,还有系统JS变量 home_head.html 全站头部 home_foot.html 全站尾部 home_gbook.html 留言本 home_comment.html 评论 label_ 开头的都是自定义页面 art_...

    精通AngularJS part1

    在HTML标签中使用指令215 82指令的编译生命周期215 83为指令编写单元测试217 84定义指令218 85使用指令修改按钮样式219 编写一个按钮指令220 86理解AngularJS的组件指令222 编写一个分页指令222 为分页指令...

    Vue使用vue-area-linkage实现地址三级联动效果的示例

    很多时候我们需要使用地址三级联动,即省市区三级联动。网上有很多插件,在此介绍Vue的一款地区联动...3.在对应vue文件的template模板上写html标签,如下图所示: 4.在对应vue文件的script上进行data默认,如下图所

Global site tag (gtag.js) - Google Analytics