通过Javascript或jQuery对HTML进行比较
我试图想出一个纯粹的前端解决scheme,以通常的做法。
在过去,我已经将重用网站元素的HTML(如<nav>
, <header>
, <footer>
等)存储在一个functions.php
文件中,并使用php函数以多重页面。 这当然可以使整个网站的更改更容易,使我的生活更轻松。
不过,我并不想用PHP(或过去的ASP)来做这件事。 有没有人知道一个干净的方式来做到这一点在JavaScript,jQuery甚至节点? 为了清楚我想调用一个函数在HTML(如writeNav();
),拉动导航的HTML。 如果可能的话,我宁愿不在任何地方包含<script>
标签。
“build立可在其他地方重复使用的HTML块”的一个非常常见的解决scheme是“模板化”。 有许多模板库可供select(Underscore甚至有它自己的小模板函数),但是我build议首先查看Handlebars.js,因为它非常强大,但也非常简单。
把手模板将允许您存储您的HTML,但是您需要:
- 在.js文件的string中,
- 在你的html页面上的
<script type='text/handlebars'>
标签中 - 在单独的html文件中被编译到单个JS文件中
它也可以让你换出小块的HTML,这样你就可以(例如)有一个被全部使用的头部,但replace标题,如下所示:
<h3>{{title}}</h3>
Handlebars网站( http://handlebarsjs.com/ )有一个很好的贯穿; 我强烈推荐它。
还有像BBEdit这样的文本编辑器,包括支持,如果它只是组织如何编写您的HTML。
我想你在说什么是HTML包括。
这不是一个真正有价值的解决scheme,而是让我通过原型devise阶段。
使用jQuery,将其包含在$(document).ready()callback中:
$(".include").each(function() { var inc = $(this); $.ajax({ url : inc.attr("title"), dataType : 'html', success : function(data) { inc.replaceWith(data); console.log("adding " + inc.attr("title")); });
然后在任何你想要包含html文件的主体中,执行以下操作:
<div class="include" title="path/to/html/file.html"></div>
具有“include”属性的所有元素(div,span等)将被title属性中文件path的内容replace。
注意:整个标签将在这个过程中被replace。
这对于jQuery来说是微不足道的,例如
function writeP(str){ document.write($('<p />').text(str).get(0)); }
然后你可以做这样的事情:
<div class="foo"> <script type="text/javascript">writeP('hello');</script> </div>
…这会导致:
<div class="foo"> <p>hello</p> </div>
这个例子很愚蠢,但是我相信这个机制本身就是你想要完成的。
干杯
- 如何开发一个没有服务器端语言的dynamic网站?
- 从节点JS访问JavaScript文件 – 初学者
- 节点js。 我如何从HTML调用本地文件
- 从Express / node.js Web应用程序预填充HTML / Jade
- mapbox gl js – 未捕获TypeError:无法读取null的属性'classList'
- 下面的代码是使用html,expressJS生成一个web表单,并保存在MongoDB中提交的细节,但有'后'错误和'get'作品
- 由于.framework文件夹,gulp复制源失败
- 使用XMLHttpRequest responsetext中的图像数据来显示图像
- Node.js单独或作为其他服务器工具的伴侣