问题标签 [precompiled-templates]

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 投票
1 回答
152 浏览

node.js - 预编译模板对非节点站点有用吗?

我一直在研究预编译我的 _underscore 模板的方法,并且开始认为 99% 的预编译模板的人似乎都在运行 node.js。

这让我认为,也许预编译的目的只是为了在服务器而不是客户端上呈现模板。

这是真的?

在服务器上编译只会在客户端呈现的模板有什么好处吗?

0 投票
1 回答
353 浏览

knockout.js - 使用 Cassette V2 编译模板 jsRender 和 KnockoutJS 模板

我正在迁移到 Cassette 的第 2 版。

但是我在网上找不到任何东西可以帮助我配置我的 Cassette 以编译 HTML 模板。

模板

一些模板 jQuery 模板为:

我会尽快修改它们以使用 jsRender!

其他作为 KnockoutJS

IConfiguration<BundleCollection>班级

0 投票
1 回答
1017 浏览

javascript - 使用 RequireJS 预编译的 Handlebars 模板

我有一个车把模板,我手动预编译并保存为 - testTemplate.handlebars。

现在,在我的 requireJS + Backbone 代码中,我有以下功能 -

所以 testTemplate.handlebars 以字符串形式返回 Javascript 代码,当传递给 Handlebars.template 时返回 JS 函数。当我尝试在控制台上打印我在 this.template 变量中得到的值时,它显示 -

但是,当$(this.el).html(this.template(data));render 函数的行 - 执行时,它会给出一条错误消息 - Uncaught Typeerror : object has no method call。(即使我可以看到 e.call 功能)

我在这里做错了吗?

此外,当我尝试编译模板运行时,渲染函数工作。在运行时编译 Handlebars.compile(testTemplate) 时返回以下函数 -

0 投票
1 回答
2120 浏览

requirejs - 使用 requireJS 和预编译的 Handlebars 模板加载翻译 (i18next)

我有一个requireJS设置,其中包含预编译的Handlebars模板和我在数据库中的翻译i18next。我需要按以下顺序做一些事情:

  1. 从数据库加载我的翻译
  2. 在 Handlebars 中注册一个助手,以便可以翻译我在预编译模板中的值

我的 requireJS 配置文件如下所示:

我的main.js文件看起来像这样,它需要namespace.js

namespace.js将尝试注册 Handlebars 助手并使用翻译初始化 i18next:

我的modules/Transport.js模块将依赖namespace.js并加载预编译的模板。加载预编译模板时,它在Handlebars.default.templates. 所以我的模块看起来像这样:

我遇到的问题是我无法让 requireJS 首先加载翻译,然后继续注册帮助程序并在我的模块中进行一些翻译。模块和模板在对我的数据库的异步调用完成之前被加载,所以我总是在没有加载东西的时候得到错误(或者帮助程序,或者 i18next 模块)

我在这里真的很困惑,在加载我的模块之前,如何设置 requireJS 来加载 Handlebars 和 i18next?

0 投票
1 回答
1847 浏览

javascript - 使用自定义助手预编译车把模板

我有一个message.handlebars模板,在浏览器中编译它时效果很好。

handlebars -message.handlebars -f -message.js成功地预编译了它。

然后在我的 ASP.NET MVC 站点中,我将引用添加为:

handlebars-helpers.js包含消息模板使用的一些自定义助手。

我从这个人的评论中采用了这种方法,但它不起作用。我在做var html = Handlebars.templates.message(data);. 在浏览器中编译它时,这再次完美运行,因此这不是上下文问题。

我得到的错误是: 在此处输入图像描述

这是预编译和使用自定义助手的正确方法吗?或者有没有办法将这些助手包含在预编译的模板中?

0 投票
2 回答
322 浏览

windows-8 - 无法选择 Windows 子文件夹中的所有 .hbs 文件

我想预编译我的 ember 模板。我为此安装了一个应用程序,但我只能预编译一个文件。

我需要选择所有扩展名为 .hbs 的文件,包括子文件夹

我试过了ember-precompile "components/**/*.hbs" -f precompiledTemplates.js

我收到错误消息

错误:ENOENT,没有这样的文件或目录 'components\**\*.hbs'

我怎么说程序在所有子文件夹中查找 .hbs 文件?

0 投票
2 回答
893 浏览

javascript - 使用 Jurassic 预编译一个 JsRender 模板服务器端

我正在尝试从用 C# 编写的类库中预编译 JsRender 模板,使用侏罗纪脚本引擎来执行 JsRender。

这是我的代码:

我已经$.templates()这个页面中获取了 JavaScript 函数调用,它指出

$.templates(markupOrSelector) 返回:已编译的模板对象

我的示例 HTML 模板很简单

但是,我的代码产生了异常:

现在,我不是 100% 清楚是否可以在没有 jQuery 的情况下使用 $ 运算符。作者在他的几个示例中包含了 jQuery,但也指出 jQuery 不是必需的。

那么出了什么问题呢?在我发布此问题的同一天,从 GitHub 获取的 JsRender 版本的文档是否已过期?(我知道 JsRender 仍处于测试阶段。)或者我在滥用侏罗纪?

编辑:

我相信这实际上是一个侏罗纪问题而不是 JsRender 问题。具体来说,我认为这与侏罗纪的全局对象有关,因为 JsRender 被包装在一个通过的立即调用函数中this,我不确定侏罗纪是否提供了this

看来我不是第一个面对这个问题的人。我已从本页上一篇文章中获得建议,并将我的代码更改为以下内容:

这不起作用 - 可能是因为 JsRender 的 IIF 仍然通过this而不是window,并且我不想修改脚本。

任何人都可以帮助推动这一进程吗?鉴于侏罗纪......我不知道......也许侏罗纪实现全局对象的方式存在一些概念上的差异,我如何从侏罗纪调用任何JsRender 函数。

0 投票
3 回答
1441 浏览

node.js - Handlebars JS 预编译比在服务器上渲染更快?

对于关于把手的所有菜鸟问题,我提前道歉。我来自 Rails 背景,虽然 Handlebars 看起来很酷,但我无法看到它比在服务器上编译视图的优势。

所以这里有问题。

目前,我们的应用程序在我们的节点服务器上编译 Handlebars JS 模板,并将完全渲染的页面传递回客户端。我被要求研究预编译模板以在客户端上呈现。

首先,我对如何构建它有点困惑。初始下载到客户端是否就像一个布局模板(只是样板 html、css 和 js),然后客户端将使用传递给它的任何 json 数据,以及位于 Handlebars.templates 中的预编译模板来构建意见的细节?

如果是这样,用它可能需要的每个可能的模板加载客户端真的更有效,而不是只在它需要的时候提供它需要的东西吗?

0 投票
1 回答
288 浏览

javascript - 使用把手从预编译的模板渲染嵌入的部分模板?

我有一个按预期呈现的预编译车把模板。

我决定向我正在预编译的模板添加一个嵌入的(非预编译的)部分引用,但部分的内容没有正确呈现。

最终结果是嵌入部分的内容包含在呈现的 HTML 中(我想我的部分是“部分”工作 :-D ),但是:

  1. 部分的名称也包含在每一行中
  2. 部分中的表达式未填充我的数据

这是呈现的 HTML。下面列出了部分命名的 3 行templateBodyItemNumberPartial(部分名称似乎是每行输出的前缀),并且没有数据呈现在<span>

templateBodyItemNumberPartial这是引用部分的主要预编译模板:

这是我定义/注册部分并调用我的预编译nameWithPartial模板的 .html 文件:

我正在尝试使用嵌入式局部来测试局部在车把中的工作方式。

任何人都可以确认是否支持此功能,或者如果我的引用部分的主模板是预编译的,我是否必须使用预编译的部分?

非常感谢!

顺便说一句,我正在运行 Win7 Pro 64 位,但希望这不是问题......

0 投票
1 回答
674 浏览

ember.js - Ember 在预编译的 hbs 模板中未定义

我正在使用grunt-ember-templates预编译 Handlebars 模板。脚本按以下顺序排列:

templates.js

现在我得到这个Uncaught ReferenceError: define is not defined 错误,它指的是define(["ember"], function(Ember){. 我究竟做错了什么?