可以在类似于CSS的html文件中包含`templates`吗?
使用html templates
。 在代码方面,很难为每个html文件保留一组正确的模板。
是否有可能有一个模板文件,很像一个css
文件,它包含在html
文件的head
部分?
例如,为了补充head
的style
部分,可以链接到样式表,例如,
<link rel="stylesheet" type="text/css" href="mystyle.css" >
我的应用程序使用几个templates
集合。 可以像样式表一样处理它们,即链接到单独的文件中,还是每个template
定义都需要直接作为原始html
文件的一部分?
想象一下,我们想要在一个名为templates.html的单独文件中导入一堆<template>
。
在(主)主页index.html中,我们可以通过HTML Imports导入文件:
<link rel="import" href="templates.html" id="templates">
在导入的文件templates.html中,根据需要添加一个或多个模板:
<template id="t1">
<div>content for template 1</div>
</template>
<template id="t2">
content for template 2
</template>
导入的文档可从<link>
元素的import
属性中使用。 你可以在其上使用querySelector
。
<script>
//get the imported document in doc:
var link = document.querySelector( 'link#templates' )
var doc = link.import
//fetch template2 1 and 2:
var template1 = doc.querySelector( '#t1' )
var template2 = doc.querySelector( '#t2' )
</script>
注意:您可以将上述脚本放置在主文档中或导入的脚本中,因为在解析(在下载时)时,导入文件中的<script>
将立即执行。
http://www.html5rocks.com/en/tutorials/webcomponents/imports/
不过你需要HTML 5
<head>
<link rel="import" href="/path/to/imports/stuff.html">
</head>
不幸,
<head> <link rel="import" href="/path/to/imports/stuff.html"> </head>
不起作用。
整个stuff.html
作为head
一部分粘在html
中,并且为了所有可行的目的而无法访问。
换句话说, cannot be found using
document.querySelector()` cannot be found using
template defined in
stuff.html中template defined in
的template defined in
,因此脚本无法使用它。
fwiw,我真的不明白任何import
它现在的工作方式的好处 - 因为它需要在将内容追加到head
之前剥离(而不是添加)所有外部html,而不是其当前操作。
上一篇: can one include `templates` in a html file similar to css?