2013-03-05 42 views
0

我正在制作一个小型网站,并且我需要一种方法来多次使用相同的html。 现在,我有一个HTML文件,其中包含所有页面常用的HTML文件,然后我使用AJAX来获取包含HTML部分的.html文件。HTML模板 - 不要将相同的html两次写入(couchdb)

例子:

主HTML:

<html> 
    <head>...</head> 
    <body> 
     <div class="main-content-wrapper"> 
      <!-- AJAX puts html here --> 
     </div> 
    </body> 
</html> 

的JavaScript:(节选)

// Fire ajax request 
$.ajax({ 
    url: pagename, 
}).done(function (data) { 

    // Overwrites old html with new html 
    $('.main-content').html(data); 

    if (callback) 
     callback(); 
}); 

但是这给了我,当我试图事件绑定到按钮,其中一个问题为html页面添加JavaScript/CSS等。我并不需要一个完整的框架,我只需要获取一些html,这样我就不必再写两次了。任何人都知道?

编辑:我得到从couchdb服务的文件,所以我不知道我是否可以使用像PHP这样的服务器端语言。

回答

5
  1. 你可以使用一个服务器端语言(如PHP和使用包括)
  2. 你可以使用一个JS模板系统(如underscore.js或mustache.js)
  3. 或者,如果你想继续做它目前的方式,利用jQuery的.on()将事件绑定到将来插入的DOM元素
+0

我得到从couchdb服务的文件,所以我不知道我是否可以使用像PHP这样的服务器端语言。 – ptf 2013-03-05 17:24:27

1

我建议使用服务器端技术来完成此任务 - 我使用PHP来包含我的页眉/页脚,CSS链接和JS包括。这是一个简单的衬垫:

<?php include '<yourfile>.html'; ?>

它非常好。

如果必须使用JS,你必须将事件绑定他们进口到DOM之后,虽然CSS应该自动适用本身。

+0

我得到从couchdb提供的文件,所以我不知道我是否可以使用像PHP这样的服务器端语言。 – ptf 2013-03-05 17:25:08

+0

你可能是对的,虽然在我看来couchdb应该支持跨域PHP请求。如果他们不这样做,你可以尝试[this](http://stackoverflow.com/questions/2752783/including-php-file-from-another-server-with-php)。否则我会使用卡比尔的编号3. – webMan1 2013-03-05 17:32:58

2

如果你的主要目标是保持“干”(不要重复自己),避免在同一HTML多次写,然后有更简单的方法(而不是AJAX调用),以实现这一目标。

使用它我们Mustache.js(或类似)的模板语言,并通过CouchDB的服务器上运行了整个事情_show请求实际上,你可以做CouchDB的完整模板。您可以对任何文档使用_show请求。作为第一个参数,show函数接收文档。然后,您加载模板引擎(Mustache.js可能是您的最佳选择正在构建的),并通过Mustache.to_html运行它()返回的输出。

这里有更多的关于_show功能: http://guide.couchdb.org/draft/show.html

还有使用jQuery Mobile的+的CouchDB + Mustache.js一套好的博客文章。 http://custardbelly.com/blog/2010/12/28/jquery-mobile-couchdb-part-3-templates-and-mustache-js/

你不应该需要的一切,他描述了那里(如jQuery移动),但模板相关的部分似乎适合你正在构建什么,至少有明确的:在一个专门为模板化的一系列会谈第三项_show函数的例子。

此外,没有什么可以阻止在CouchDB中使用PHP。这只是更多(而且通常是不必要的)开销。您将在另一台HTTP服务器(CouchDB中的一台)前运行HTTP服务器+ PHP。无论如何,这是完全可能的,如果你正在做图像处理或发送电子邮件等事情,并且不希望将它们构建为_changes提要的反应事件(这对“伟大”更“深入”的CouchDB比你在这一点上需要的)。

如果你确实在CouchDB前面的PHP路线,我建议检查Sag:http://saggingcouch.com/这是我找到的最清洁的CouchDB PHP库。

最后,您还可以检出静态+项目由IrisCouch.com的杰森 - 史密斯: https://github.com/iriscouch/static-plus

它做模板(使用Handlebars.js - 这是非常相似的Mustache.js),但确实它在您的开发机器上发布,并只发布静态内容到CouchDB。您可以获得模板化的DRY-ness,但可以提供预先编制好的服务。

希望在那里有用。 :)

+0

谢谢,我会明确地研究这种方法! – ptf 2013-03-07 11:51:49

+0

是不是_show函数在数据库中显示单个文档?在设计文档中是否包含.html附件? – ptf 2013-03-07 13:57:25

+0

它是指数据库中的文档,是的。它可以与设计文档中的内容一起使用,但不能来自任何地方的附件(afaik)。但是,您可以将您的HTML直接存储在JSON设计文档的“模板”(或类似文件)下。我在BlueInk中这样做:http://is.gd/blueink – BigBlueHat 2013-03-07 19:45:12