问题标签 [client-side-templating]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
18338 浏览

linkedin - 使用 Dust.js 进行客户端模板化的基本示例

这是我第一次涉足客户端模板,我想确保我理解并正确使用它。在阅读了这个 LinkedIn 工程博客之后,我决定使用dust.js而不是mustachehandlebars。请注意,这篇 stackoverflow 帖子回答了我的许多问题,但我仍然有一些事情要澄清。

在我工作的环境中,我无法访问服务器端的任何内容,因此我创建的所有内容都必须能够完全在客户端的浏览器中运行。对于此示例,我将尝试从LinkedIn Dust 教程重新创建此代码示例

我包含了dust-full.js而不是dust-core.js,因为我要即时编译模板:

这是HTML:

和 JavaScript(使用 jQuery):

正如您在这个 jsfiddle中看到的那样,这似乎工作正常。

几个问题:

  1. 为什么模板应该包含在脚本标签中?为什么不将其包含在 id="entry-template" 的 div 中,然后在dust.render() 期间替换其中的html,就像在这个修改过的小提琴中一样?

  2. dust.loadSource(compiled); ”有什么作用?在文档中它说“如果您将 'compiled' 字符串作为加载的 JS 脚本块的一部分包含在内,则将定义并注册 'intro' 模板。如果您想立即执行此操作”,请调用它,但是我不明白那是什么意思。我注意到,如果我删除该行,那么它就不起作用,所以我想了解它。

  3. 在我对我的模板感到满意并完成它之后,我应该如何编译它以便我导入更轻的dust-core.js,而不是让浏览器在每次加载页面时对其进行编译?这样做是否有显着优势,或者我应该像这样使用dust-full.js吗?

  4. 更一般地说,这看起来像是实现灰尘(或任何模板框架)的合适/有用的方式,还是我只是在某个地方?

提前致谢。

0 投票
1 回答
2684 浏览

jquery - Dust.js 客户端模板中的条件语句

这是以下内容的jsfiddle。假设我有这个 JSON 数据:

如果我想使用dust.js输出所有人的名字,我会像这样设置模板:

但是,如果:

1)我只想输出“绿色”眼睛的人的名字?有没有办法在灰尘中使用条件来做到这一点?

2)我只想输出前两个名字,不管眼睛颜色

3)我只想输出第二个人的名字,不管眼睛颜色

编辑:添加第四和第五个场景:

4)我只想显示第二个和第三个名字(即索引X到索引Y

5)我只想输出绿眼睛的人的前两个名字(比如说人的列表比上面显示的3个长得多,包括更多不会显示的绿眼睛的人)。

还有一个问题:

假设我的 JSON 有一个键/值对,如下所示:

例如,有没有办法使用 {@eq} 检查它是否包含“tag2”?

0 投票
0 回答
393 浏览

javascript - 防止某些标签被下划线模板转义

我正在使用下划线模板,并希望利用它们的 HTML 转义功能,同时允许一些标签仍然通过。

然而,纵观它们的实现,似乎这是一个全有或全无的情况:打开转义,所有 HTML 实体都被转义。例如,除了一些“安全”标签(例如,<p><strong>等)之外,我无法转义所有内容。

绕过这个限制的最好方法似乎是覆盖下划线的_.escape()and_.unescape(),但这实际上似乎是一个糟糕的想法,而不是我想做的事情。必须有一种更简单、更直接的方法,即使这意味着使用另一个模板引擎。

0 投票
1 回答
6319 浏览

javascript - 剑道网格更改样式单元格数据

我有一个非常基本的剑道网格。我正在使用模板功能来设置单元格数据的样式。我想要做的是红色的“编辑”样式和绿色的“删除”样式。

网格代码

我该怎么做。我无法分离单元格数据。

JSFiddle - http://jsfiddle.net/Sbb5Z/1338/

0 投票
1 回答
864 浏览

javascript - John Resig Micro 模板错误

所以我的目标是使用John Resig 的模板引擎

我需要向函数传递一个包含“模板”的变量。但是,问题是我需要通过以下内容:

似乎打破的是:

这段代码通过正则表达式传递它失败了。重要的是我能够传递上述任何代码并且不会中断。有任何想法吗?

0 投票
0 回答
248 浏览

jquery - 车把模板没有加载事件

我正在使用带有引导模式的把手和把手 jquery 插件。我的问题是把手库没有提供任何适当的事件,这些事件将在编译和渲染给定模板后触发,从而使我的 UI 无法交互或出现问题他们显示。

目前,此代码仅在我在其上放置警告语句时才能正确显示:

你能帮帮家伙吗?有没有办法在模板完全加载和渲染后连接回调?

0 投票
0 回答
45 浏览

javascript - 支持文件加载的 Javascript 模板引擎

我需要一个支持从文件加载部分的客户端 javascript 模板引擎。那是因为我有一个带有无序列表的模板。它有 2 种类型的列表项(这意味着,例如,一种 li 标签具有文本输入,而另一种具有文本输入和图像)。

我现在希望能够在不同的模板文件中使用这些列表项模板,而无需复制/粘贴它们。

到目前为止,我一直使用 doT.js 部分,但是为了能够使用部分,它必须在同一个文件中声明。因此,我必须将片段复制到每个模板文件中,并且当我更改其中一个 li 模板的结构时,我必须在所有文件中进行更改。

我想避免这种情况。有什么我可以用的吗?

如果可用,我计划将模板与 require.js 插件一起使用。

0 投票
1 回答
1097 浏览

jquery - 使用新数据重复渲染 Dust.js 模板

什么是重复渲染灰尘模板的最佳方法,同时让它在数据文件中前进它的引用,而不是每次都从头开始重复。例如:

假设我有一个 100 多人的列表,以 JSON 格式存储在一个名为data的变量中:

我有这个template.tl文件,它导出一行三个名字/年龄:

我预编译成template.js

然后我有一个index.html文件,如下所示:

最好的方法是什么,所以每次单击按钮时,一行三个人将被附加到内部<div id="people"></div>,并且每次后续单击都会加载下一个 / 测试数据数组的末尾(可以假设根据我的需要,人数总是三的倍数)。

0 投票
3 回答
103 浏览

backbone.js - 为什么我应该在 BackboneJS 应用程序中使用 Handlbars 模板而不是下划线模板?

我见过很多人使用带有 BackboneJS 的车把模板而不是下划线模板,甚至下划线也是 BackboneJS 的硬依赖。谁能告诉我这样做的好处?

0 投票
3 回答
3069 浏览

ajax - 在 Laravel 和 JavaScript 之间共享模板

如何在我的 PHP 后端和 JavaScript / AJAX 请求之间共享模板信息?

很久以前,我刚刚发送了我的 AJAX 请求,并让服务器生成了 HTML 并照此发送。今天我有我的 AJAX 数据作为 JSON,但我不知道如何在服务器端使用相同的模板(例如用户列表)和在客户端(用于刷新、过滤等)而不创建冗余布局代码。

是否有用于 PHP/LaravelJavaScript 的带有解析器的模板语言?

Laravel 模板引擎 Blade 显然不能在 JavaScript 中使用。我通过 Google 找到的唯一共享模板语言是 Mustache,但是 Laravel 的解析器已经过时了。

那里还有其他东西吗?您使用哪种方法?