问题标签 [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.
javascript - 使用隐藏状态而不是注释或自定义脚本标记来模板化 HTML
Javascript 最佳实践和约定,如 John Resig 和《可维护的 JavaScript》一书的作者 Nicholas Zachas 所强调的,建议使用 HTML 注释或具有自定义类型的脚本标签来存储 HTML 模板。
评论示例:
脚本标签示例:
我非常不喜欢基于评论的模板,因为评论应该只是那些——评论,旨在被正常运行的应用程序忽略——因此我对它是如何被 JS 建议感到有些困惑大师。
脚本标签模板更有意义,我通常称它为最好的实践,如果不是很好的实践,因为目的和初始的非功能都被很好地描述了。我唯一的问题是,在一些现代编辑器中,颜色突出显示、自动完成、自动标记验证等在脚本标签中工作时都会丢失。
我过去采用的一种模板方法是将所有内容放在容器 div 中,然后将容器 div 分类为 class="template",然后在 CSS 中将其标记为“.template { display: none; }”。
这对我来说效果很好,虽然 DOM 解析器和渲染器显然不必要地预先处理数据,但我不确定这是否真的是一个大问题,只要模板结构不破坏 HTML有效性规则。
那么,我的问题是,我错过了什么?不鼓励使用第三种存储模板标记的方法(即,将其作为 display:none 放在 DOM 中)的唯一原因是因为 DOM 解析器和渲染器无论如何都会处理它?或者还有其他原因,也许是技术原因,我还没有遇到过?我想知道,因为我想再次利用我的编辑器的能力来帮助我微调适当的 HTML 模板。
handlebars.js - 安装和使用客户端模板引擎
我正在建立一个数据库网站。我目前正在构建各种网页。对于我的搜索结果,我想使用客户端模板引擎。我以前没有使用过,有一个简单的问题:
我看到许多模板引擎(我研究过 Handlebars.js 和dust.js 最多)需要安装在命令行上(而不是像 jQuery 那样简单地包含在库中)。虽然我目前正在使用 MAMP 在 Mac 上进行开发并且可以在本地安装它们,但这是否意味着我还需要将它安装在 webapp 将在运行时所在的公共服务器上?
我想知道编译器是否需要安装,然后您只需上传不需要额外代码/安装的预编译模板。
如果有人可以澄清,那将非常有帮助。
javascript - 在 underscore.js 中使用相同的 json 分别构建表标题和数据的最佳方法?
我正在使用客户端模板在我的第一个站点上工作,到目前为止一切都很好。我只是希望为下面的代码实现最佳性能。
我得到了这种格式的json:
并使用下面的 underscore.js 模板:
基本上,我正在使用上面的数据构建一个幻灯片,所以每张“幻灯片”都有特定的字段标题、延迟等,另一方面,月份里面有数据。我正在<li>
为每张幻灯片构建一个水平<table>
,在该表中我正在构建<th>
月份(即一月、二月、三月等),然后我在<td>
's中分隔月份值
而不是_.(each
像我上面所做的那样使用相同的数据(但回显不同的值)执行两个语句,实现所需输出的最佳方法是什么?
javascript - 搜索页面的客户端和服务器端(ajax)渲染之间的区别,关于 SEO
我正在开发一个或多或少是一个搜索工具的页面,它基本上由一个输入字段组成,它会根据输入向用户显示一个条目列表。在这种情况下,如果页面使用客户端或服务器端渲染(使用 AJAX),对于 SEO 是否有任何区别,为什么?
如果我在这种特定场景中使用客户端渲染,我只是担心它是否是一个劣势。
我知道与服务器端相比,客户端渲染对 SEO 来说是一个劣势——可以说,当 HTML 一开始就完成时。但是在动态情况下,无论如何都必须异步加载结果,这仍然是一个缺点吗?这是否取决于当前内容是否可以映射到 URL?
requirejs - 如何在带有 RequireJS 的 Handlebars 中使用预编译的模板?
我想预编译我的 Handlebars 模板,但我不确定这在开发模式下是如何工作的。
是否有一些后台进程(如Guard)运行以持续监控 Handlebars 模板文件的更改?
我正在使用 RequireJS 来拉入模板;例如:
所以我知道一旦模板被预编译,就会这样做:
请注意关于第二个代码片段中的以下内容:
- RequireJS 模块不再拉入模板。
- Handlebars.compile() 不再使用。
那么,每当模板文件发生文件系统级别的修改时,我通常会运行 Guard 以保持我的模板编译?
基本上我的问题是,开发人员这样做的意图是什么?
我也在使用 Rails,所以也许有一些像 sass-rails 这样的黑魔法。
angularjs - 角度模板字符串的一次性渲染
我正在编写一个指令以将SlickGrid与我的 Angular 应用程序集成。我希望能够使用角度模板(而不是格式化程序函数)配置 SlickGrid 列。为此,我需要该指令动态创建将 HTML 作为字符串返回的格式化程序函数。
我的方法是创建一个临时范围,将模板链接到该范围,捕获 html,然后销毁该范围。这有效,但抱怨$digest already in progress
. 有没有办法以这种方式渲染角度模板,与全局 $digest 循环隔离?
顺便说一句:我尝试使用 $interpolate,效果很好,但不支持ng-repeat
或其他指令。
javascript - 在车把助手中使用数据
我正在尝试编写一个 Handlebars 帮助器,它可以让我显示元素x
的次数,其中x
在传递给模板的数据中定义。
我正在调整我在这里找到的代码#times
。但是,我希望能够使用传递给模板的数据来控制它,而不是为每个模板运行固定次数。
这是一个人为的例子,但如果我传入{stars: 50}
这个模板,我希望它打印 50 颗星。
这显然不是正确的方法,因为我在编译模板时遇到了解析错误。
Expecting 'CLOSE', 'CLOSE_UNESCAPED', 'STRING', 'INTEGER', 'BOOLEAN', 'ID', 'DATA', 'SEP', got 'OPEN'
但是我如何让我的助手接受动态输入呢?
javascript - 移动设备中的 Javascript 模板解析
我已经为 javascript 实现了基本的模板解析器。它只是替换模板字符串中的变量。即 {event.date} 将是 2013 年 7 月 4 日
我正在使用脚本标签来存储模板字符串
但它在移动设备中出现错误,所以我为此使用了 div 元素
但它会创建导致其他问题的 dom 元素。有没有其他方法可以做到这一点?
javascript - 具有顶级数组的 Handbars.js 模板
我很难理解如何使用带有 jQuery 的 handlebars.js 来处理顶级字典数组
我的数据对象不包含带有命名数组对象的字典(这是大多数在线示例处理的内容)。我的数据对象如下所示:
这是一个工作的 jsfiddle(使用命名的数组对象(我没有)和一个非工作的 jsfiddle 与我的实际数据对象(不起作用)。
http://jsfiddle.net/eljaywilson/ZhF5h/ - 有效,但不是我的数据对象的外观
google-app-engine - 获取 TemplateSyntaxError: unexpected char u'#' on include a Mustache template in html file by python Google App Engine
TemplateSyntaxError: unexpected char u'#'
当我在由 Python Google App Engine 服务器提供的 HTML 文件中包含一个简单的 Mustache 模板时,我收到一个错误。
我想要包含的小胡子模板是:
{{#item}} {{name}} {{/item}}
我的 HTML 文件如下所示:
既然模板是用 type=text/mustache-template 包裹在脚本标签上的,那么服务器不应该忽略它吗?
我无法理解,为什么我会收到 TemplateSyntaxError 以及我应该怎么做才能摆脱它。有人有什么想法吗?谢谢!