【问题标题】:Hiding HTML template from client side从客户端隐藏 HTML 模板
【发布时间】:2014-09-16 23:38:18
【问题描述】:

我想让我的客户端代码尽可能简洁。我的项目使用 Knockout JS 和这个模板引擎:https://github.com/blueimp/JavaScript-Templates。我已经在我的源代码底部创建了模板,计算值呈现在每个团队板的“pre”部分(我真的不想看到)。有没有办法隐藏模板并在 DOM 加载时调用它?

【问题讨论】:

  • 你试过只能按需调用的外部模板吗?
  • 我也在用Node,我应该补充一下,并且有一个解决方案服务器端。但是,这会使我的应用程序变得复杂,因为我必须将淘汰赛数据传递给服务器然后再返回。

标签: javascript jquery html knockout.js template-engine


【解决方案1】:

要从服务器加载您的模板,请将它们放入自己的小 .html 文件中,然后在客户端上,您可以使用 jquery 将它们提取到变量中:

// The variable that we're going to put the template in
var myTemplate;

$.ajax({
      async: false,
      type: "GET",
      url: "/templates/myTemplate.html",
      success : function(data) {
            myTemplate = data;
      }
 });

那么当你想使用模板的时候,你可以用模板调用templ()

 var result = tmpl(myTemplate, data);

注意:我已经使用 async:false 强制 jquery 同步,因为您想确保调用模板时模板就在那里。

【讨论】:

  • 如果要运行的模板很多,开销会不会太大?
  • 开销在哪里?无论如何,您都在下载 html,如果您在第一次发出请求时通过 AJAX 进行操作或将其放入正文中,这没什么区别。
  • 我在我的 ko.computed 函数中有这个,数据被发送到模板。但它似乎不起作用。不过,我的 GET 请求确实显示了 200 HTTP 状态代码。
  • 我的 template.html 文件是否只需要将脚本标签包裹在模板 HTML 或模板化 HTML 周围?我还需要 HTML 文档的其余部分吗?
  • 好的,谢谢。我将继续为此努力。我还没有从这种方法生成输出,但从逻辑上讲这似乎是有道理的。我可能需要深入挖掘 Knockout 的文档,以确保我没有忽略某些内容。
猜你喜欢
  • 1970-01-01
  • 2013-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多