gpt4 book ai didi

javascript - 如何使用 Hogan.JS 从外部文件加载模板?

转载 作者:数据小太阳 更新时间:2023-10-29 03:58:44 26 4
gpt4 key购买 nike

我使用 Hogan.JS作为 JavaScript 模板库。它应该从外部文件加载 JavaScript 模板。人们可能可以在一个外部 JavaScript 文件中外包多个模板。

有人知道怎么做吗?

我有以下代码示例:

<!DOCTYPE html>
<html>
<head>
<title>Hogan.JS Test</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script src="js/jquery-1.9.0.min.js"></script>
<script src="js/hogan-2.0.0.min.js"></script>
<script id="scriptTemplate" type="text/mustache">
<p>Your text here: {{text}}</p>
</script>
</head>
<body>
<script>
var data = {
text: 'Hello World'
};

var template = $('#scriptTemplate').html();
var compiledTemplate = Hogan.compile(template);
var renderedTemplate = compiledTemplate.render(data);

var box = document.createElement('div');
box.innerHTML = renderedTemplate;
document.body.insertBefore(box,document.body.childNodes[0]);
</script>
</body>
</html>

有了 ID,我可以处理模板,但我总是需要一个单独的内联脚本。 :-(

这如何处理外部文件?

最佳答案

加载外部模板有两种选择:

  1. 预编译模板(Hogan.js 恕我直言的最佳功能)或
  2. 使用require.jstext plugin加载模板字符串

不幸的是,预编译 Hogan.js 模板的文档不存在。如果您有 Github repo 的副本然后在 bin 目录中是一个名为 hulk 的脚本,它将完成这项工作。它需要 nodejs连同一些npm安装模块(即 noptmkdirp)。

一旦你安装了 nodejs 和那些模块,给定一个模板文件 Test.hogan:

<p>Your text here: {{text}}</p>

您可以使用以下命令预编译脚本:

hulk Test.hogan

产生以下文本:

if (!!!templates) var templates = {};
templates["Test"] = new Hogan.Template({code: function (c,p,i) { var t=this;t.b(i=i||"");t.b("<p>Your text here: ");t.b(t.v(t.f("text",c,p,0)));t.b("</p>");return t.fl(); },partials: {}, subs: { }});

将其保存到名为 templates.js 的文件中

现在在您的 HTML 页面中,您将加载该 templates.js 文件并创建一个名为 templates 的全局对象,其中已编译的模板函数位于键“Test”中.您也可以省略 hogan.js 文件,因为它是编译器(并且您的模板现在已预编译),只包含进来的 template.js 文件分布。

<!DOCTYPE html>
<html>
<head>
<title>Hogan.JS Test</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script src="js/template.js"></script>
<script src="js/templates.js"></script>
</head>
<body>
<script>
var data = {
text: 'Hello World'
};

var compiledTemplate = templates['Test'];
var renderedTemplate = compiledTemplate.render(data);

var box = document.createElement('div');
box.innerHTML = renderedTemplate;
document.body.insertBefore(box,document.body.childNodes[0]);
</script>
</body>
</html>

注意:我在使用 Github 存储库的当前 master 分支时确实遇到了一些问题,因为它生成的模板使用的构造函数与 2.0 中使用的构造函数不同.0 模板版本。 如果您使用 hulk,请务必使用位于 lib 文件夹中的 template.js 文件。

或者,您可以使用 require.js 和文本插件。下载它们并将它们保存到您的 js 文件夹中。然后你需要添加一个 require 语句来加载模板文本:

<!DOCTYPE html>
<html>
<head>
<script src="js/hogan-2.0.0.js"></script>
<script src="js/require.js"></script>
</head>
<body>
<script>
var data = {
text: 'Hello World'
};

require(['js/text!Test.hogan'], function(testHoganText) {
// testHoganText contains the text of your template
var compiled = Hogan.compile(testHoganText);
var renderedTemplate = compiled.render(data);

var box = document.createElement('div');
box.innerHTML = renderedTemplate;
document.body.insertBefore(box,document.body.childNodes[0]);
});
</script>
</body>
</html>

关于javascript - 如何使用 Hogan.JS 从外部文件加载模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14601578/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com