问题标签 [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.
node.js - 预编译模板对非节点站点有用吗?
我一直在研究预编译我的 _underscore 模板的方法,并且开始认为 99% 的预编译模板的人似乎都在运行 node.js。
这让我认为,也许预编译的目的只是为了在服务器而不是客户端上呈现模板。
这是真的?
在服务器上编译只会在客户端呈现的模板有什么好处吗?
knockout.js - 使用 Cassette V2 编译模板 jsRender 和 KnockoutJS 模板
我正在迁移到 Cassette 的第 2 版。
但是我在网上找不到任何东西可以帮助我配置我的 Cassette 以编译 HTML 模板。
模板
一些模板 jQuery 模板为:
我会尽快修改它们以使用 jsRender!
其他作为 KnockoutJS
IConfiguration<BundleCollection>
班级
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) 时返回以下函数 -
requirejs - 使用 requireJS 和预编译的 Handlebars 模板加载翻译 (i18next)
我有一个requireJS设置,其中包含预编译的Handlebars模板和我在数据库中的翻译i18next。我需要按以下顺序做一些事情:
- 从数据库加载我的翻译
- 在 Handlebars 中注册一个助手,以便可以翻译我在预编译模板中的值
我的 requireJS 配置文件如下所示:
我的main.js
文件看起来像这样,它需要namespace.js
:
我namespace.js
将尝试注册 Handlebars 助手并使用翻译初始化 i18next:
我的modules/Transport.js
模块将依赖namespace.js
并加载预编译的模板。加载预编译模板时,它在Handlebars.default.templates
. 所以我的模块看起来像这样:
我遇到的问题是我无法让 requireJS 首先加载翻译,然后继续注册帮助程序并在我的模块中进行一些翻译。模块和模板在对我的数据库的异步调用完成之前被加载,所以我总是在没有加载东西的时候得到错误(或者帮助程序,或者 i18next 模块)
我在这里真的很困惑,在加载我的模块之前,如何设置 requireJS 来加载 Handlebars 和 i18next?
javascript - 使用自定义助手预编译车把模板
我有一个message.handlebars
模板,在浏览器中编译它时效果很好。
我handlebars -message.handlebars -f -message.js
成功地预编译了它。
然后在我的 ASP.NET MVC 站点中,我将引用添加为:
handlebars-helpers.js
包含消息模板使用的一些自定义助手。
我从这个人的评论中采用了这种方法,但它不起作用。我在做var html = Handlebars.templates.message(data);
. 在浏览器中编译它时,这再次完美运行,因此这不是上下文问题。
我得到的错误是:
这是预编译和使用自定义助手的正确方法吗?或者有没有办法将这些助手包含在预编译的模板中?
windows-8 - 无法选择 Windows 子文件夹中的所有 .hbs 文件
我想预编译我的 ember 模板。我为此安装了一个应用程序,但我只能预编译一个文件。
我需要选择所有扩展名为 .hbs 的文件,包括子文件夹
我试过了ember-precompile "components/**/*.hbs" -f precompiledTemplates.js
我收到错误消息
错误:ENOENT,没有这样的文件或目录 'components\**\*.hbs'
我怎么说程序在所有子文件夹中查找 .hbs 文件?
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 函数。
node.js - Handlebars JS 预编译比在服务器上渲染更快?
对于关于把手的所有菜鸟问题,我提前道歉。我来自 Rails 背景,虽然 Handlebars 看起来很酷,但我无法看到它比在服务器上编译视图的优势。
所以这里有问题。
目前,我们的应用程序在我们的节点服务器上编译 Handlebars JS 模板,并将完全渲染的页面传递回客户端。我被要求研究预编译模板以在客户端上呈现。
首先,我对如何构建它有点困惑。初始下载到客户端是否就像一个布局模板(只是样板 html、css 和 js),然后客户端将使用传递给它的任何 json 数据,以及位于 Handlebars.templates 中的预编译模板来构建意见的细节?
如果是这样,用它可能需要的每个可能的模板加载客户端真的更有效,而不是只在它需要的时候提供它需要的东西吗?
javascript - 使用把手从预编译的模板渲染嵌入的部分模板?
我有一个按预期呈现的预编译车把模板。
我决定向我正在预编译的模板添加一个嵌入的(非预编译的)部分引用,但部分的内容没有正确呈现。
最终结果是嵌入部分的内容包含在呈现的 HTML 中(我想我的部分是“部分”工作 :-D ),但是:
- 部分的名称也包含在每一行中
- 部分中的表达式未填充我的数据
这是呈现的 HTML。下面列出了部分命名的 3 行templateBodyItemNumberPartial
(部分名称似乎是每行输出的前缀),并且没有数据呈现在<span>
:
templateBodyItemNumberPartial
这是引用部分的主要预编译模板:
这是我定义/注册部分并调用我的预编译nameWithPartial
模板的 .html 文件:
我正在尝试使用嵌入式局部来测试局部在车把中的工作方式。
任何人都可以确认是否支持此功能,或者如果我的引用部分的主模板是预编译的,我是否必须使用预编译的部分?
非常感谢!
顺便说一句,我正在运行 Win7 Pro 64 位,但希望这不是问题......
ember.js - Ember 在预编译的 hbs 模板中未定义
我正在使用grunt-ember-templates预编译 Handlebars 模板。脚本按以下顺序排列:
在templates.js
:
现在我得到这个Uncaught ReferenceError: define is not defined
错误,它指的是define(["ember"], function(Ember){
. 我究竟做错了什么?