2012-12-06 24 views
8

我得到了服务器和客户端模板的想法,但是dust.js让我有点困惑。如何使用dustjs-linkedin作为客户端模板?

为了使用dust.js用于客户端模板,你需要三个步骤:

  1. complie模板
  2. 负载模板
  3. 呈现模板

,对吗?

但模板从哪里来?我看到了两种不同的方法:

1. <script> template <script> 
2. <div> template </div> 

......两者都在DOM中。哪个是对的?

我也注意到你可以通过ajax加载模板,所以模板不会在DOM中看到,但我不知道该怎么做。

此外,我目前正在使用玉作为快速查看引擎。是否有必要切换到dust.js?有什么优势?

回答

11

这是LinkedIn尘JS wiki页面,可以回答你的问题,具有非常好的例子:http://linkedin.github.com/dustjs/

但在这里回答你的问题:

是的,你需要编译成为一个JavaScript你的尘土模板文件,您可以通过<script>标记添加到您的页面,然后致电dust.render方法来呈现您的模板。下面是一个例子:

在模板文件
  1. 写入下面的代码和在命令行它由dustc sample.tl保存为sample.tl

    <p>Hi {firstName} {lastName}</p> 
    
  2. 编译sample.tl到sample.js或使用dust.compile("your_template_code", "template_name")编译模板并将输出保存在JavaScript文件(sample.js)中,或者使用duster.js通过nodejs观察和编译模板:https://github.com/dmix/dusterjs

  3. 在您的html中添加sample.js:

    <script type="text/javascript" src="sample.js"></script> 
    

    这也会将您的模板注册到dust.cache。

  4. 在JavaScript

    var your_json = {firstName:'James', lastName:'Smith'}; 
    
    dust.render('sample', your_json, function(err, out){ 
    
        your_dom_element.innerHTML = out; 
    
    }); 
    

    以上dust.render方法的结果将是<p>Hi James Smith</p>

    所以你需要传递3个参数来dust.renderdust.render(template_name, json, callback)

+0

我使用linkedin-dust并表示,如何在客户端访问dust.render?我认为我必须包含一个js文件,但是我必须手动添加它作为静态切断的内容,还是灰尘包含文件的请求处理程序? – James

+0

是的,您需要将dust-core.js添加到您的页面才能渲染防尘模板。您还需要添加已编译的灰尘模板文件。 https://github.com/linkedin/dustjs/blob/master/dist/dust-core.js –

0

正如维基所言,您可以在客户端或服务器中使用灰尘。如果你在客户端使用它,你应该得到模板(例如使用ajax请求),在浏览器中编译一个渲染器。你将不得不在你的页面中包含灰尘脚本文件。

另一方面,您可以在服务器中使用灰尘(使用rhino或nodejs)。在这种情况下,您将在服务器中编译和渲染模板,以便浏览器接收html。

+2

由如果你对表演感兴趣,这是一个不好的建议。如果你的模板没有改变,编译一次,然后直接将编译后的模板提供给客户端,而不是在客户端编译它们会更好。这样你就不需要发送dust.js到客户端,客户端也不需要花时间编译你的模板。 – fabspro

+1

最好在构建时或作为开发的一部分进行预编译,然后在客户端上使用模型进行编译。这样你可以允许本地缓存你的模板。 – pilau

相关问题