问题标签 [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.
linkedin - 使用 Dust.js 进行客户端模板化的基本示例
这是我第一次涉足客户端模板,我想确保我理解并正确使用它。在阅读了这个 LinkedIn 工程博客之后,我决定使用dust.js而不是mustache或handlebars。请注意,这篇 stackoverflow 帖子回答了我的许多问题,但我仍然有一些事情要澄清。
在我工作的环境中,我无法访问服务器端的任何内容,因此我创建的所有内容都必须能够完全在客户端的浏览器中运行。对于此示例,我将尝试从LinkedIn Dust 教程重新创建此代码示例。
我包含了dust-full.js而不是dust-core.js,因为我要即时编译模板:
这是HTML:
和 JavaScript(使用 jQuery):
正如您在这个 jsfiddle中看到的那样,这似乎工作正常。
几个问题:
为什么模板应该包含在脚本标签中?为什么不将其包含在 id="entry-template" 的 div 中,然后在dust.render() 期间替换其中的html,就像在这个修改过的小提琴中一样?
“ dust.loadSource(compiled); ”有什么作用?在文档中它说“如果您将 'compiled' 字符串作为加载的 JS 脚本块的一部分包含在内,则将定义并注册 'intro' 模板。如果您想立即执行此操作”,请调用它,但是我不明白那是什么意思。我注意到,如果我删除该行,那么它就不起作用,所以我想了解它。
在我对我的模板感到满意并完成它之后,我应该如何编译它以便我导入更轻的dust-core.js,而不是让浏览器在每次加载页面时对其进行编译?这样做是否有显着优势,或者我应该像这样使用dust-full.js吗?
更一般地说,这看起来像是实现灰尘(或任何模板框架)的合适/有用的方式,还是我只是在某个地方?
提前致谢。
jquery - Dust.js 客户端模板中的条件语句
这是以下内容的jsfiddle。假设我有这个 JSON 数据:
如果我想使用dust.js输出所有人的名字,我会像这样设置模板:
但是,如果:
1)我只想输出“绿色”眼睛的人的名字?有没有办法在灰尘中使用条件来做到这一点?
2)我只想输出前两个名字,不管眼睛颜色
3)我只想输出第二个人的名字,不管眼睛颜色
编辑:添加第四和第五个场景:
4)我只想显示第二个和第三个名字(即索引X到索引Y)
5)我只想输出绿眼睛的人的前两个名字(比如说人的列表比上面显示的3个长得多,包括更多不会显示的绿眼睛的人)。
还有一个问题:
假设我的 JSON 有一个键/值对,如下所示:
例如,有没有办法使用 {@eq} 检查它是否包含“tag2”?
javascript - 防止某些标签被下划线模板转义
我正在使用下划线模板,并希望利用它们的 HTML 转义功能,同时允许一些标签仍然通过。
然而,纵观它们的实现,似乎这是一个全有或全无的情况:打开转义,所有 HTML 实体都被转义。例如,除了一些“安全”标签(例如,<p>
或<strong>
等)之外,我无法转义所有内容。
绕过这个限制的最好方法似乎是覆盖下划线的_.escape()
and_.unescape()
,但这实际上似乎是一个糟糕的想法,而不是我想做的事情。必须有一种更简单、更直接的方法,即使这意味着使用另一个模板引擎。
javascript - 剑道网格更改样式单元格数据
我有一个非常基本的剑道网格。我正在使用模板功能来设置单元格数据的样式。我想要做的是红色的“编辑”样式和绿色的“删除”样式。
网格代码
我该怎么做。我无法分离单元格数据。
JSFiddle - http://jsfiddle.net/Sbb5Z/1338/
javascript - John Resig Micro 模板错误
所以我的目标是使用John Resig 的模板引擎。
我需要向函数传递一个包含“模板”的变量。但是,问题是我需要通过以下内容:
似乎打破的是:
这段代码通过正则表达式传递它失败了。重要的是我能够传递上述任何代码并且不会中断。有任何想法吗?
jquery - 车把模板没有加载事件
我正在使用带有引导模式的把手和把手 jquery 插件。我的问题是把手库没有提供任何适当的事件,这些事件将在编译和渲染给定模板后触发,从而使我的 UI 无法交互或出现问题他们显示。
目前,此代码仅在我在其上放置警告语句时才能正确显示:
你能帮帮家伙吗?有没有办法在模板完全加载和渲染后连接回调?
javascript - 支持文件加载的 Javascript 模板引擎
我需要一个支持从文件加载部分的客户端 javascript 模板引擎。那是因为我有一个带有无序列表的模板。它有 2 种类型的列表项(这意味着,例如,一种 li 标签具有文本输入,而另一种具有文本输入和图像)。
我现在希望能够在不同的模板文件中使用这些列表项模板,而无需复制/粘贴它们。
到目前为止,我一直使用 doT.js 部分,但是为了能够使用部分,它必须在同一个文件中声明。因此,我必须将片段复制到每个模板文件中,并且当我更改其中一个 li 模板的结构时,我必须在所有文件中进行更改。
我想避免这种情况。有什么我可以用的吗?
如果可用,我计划将模板与 require.js 插件一起使用。
jquery - 使用新数据重复渲染 Dust.js 模板
什么是重复渲染灰尘模板的最佳方法,同时让它在数据文件中前进它的引用,而不是每次都从头开始重复。例如:
假设我有一个 100 多人的列表,以 JSON 格式存储在一个名为data的变量中:
我有这个template.tl文件,它导出一行三个名字/年龄:
我预编译成template.js:
然后我有一个index.html文件,如下所示:
最好的方法是什么,所以每次单击按钮时,一行三个人将被附加到内部<div id="people"></div>
,并且每次后续单击都会加载下一个 / 测试数据数组的末尾(可以假设根据我的需要,人数总是三的倍数)。
backbone.js - 为什么我应该在 BackboneJS 应用程序中使用 Handlbars 模板而不是下划线模板?
我见过很多人使用带有 BackboneJS 的车把模板而不是下划线模板,甚至下划线也是 BackboneJS 的硬依赖。谁能告诉我这样做的好处?
ajax - 在 Laravel 和 JavaScript 之间共享模板
如何在我的 PHP 后端和 JavaScript / AJAX 请求之间共享模板信息?
很久以前,我刚刚发送了我的 AJAX 请求,并让服务器生成了 HTML 并照此发送。今天我有我的 AJAX 数据作为 JSON,但我不知道如何在服务器端使用相同的模板(例如用户列表)和在客户端(用于刷新、过滤等)而不创建冗余布局代码。
是否有用于 PHP/Laravel和JavaScript 的带有解析器的模板语言?
Laravel 模板引擎 Blade 显然不能在 JavaScript 中使用。我通过 Google 找到的唯一共享模板语言是 Mustache,但是 Laravel 的解析器已经过时了。
那里还有其他东西吗?您使用哪种方法?