为什么我们应该将模板包装在脚本块内?

2024-01-01

背景

所有 JS 模板引擎都建议将模板文本放入脚本块中,如下所示:

<script id="peopleTemplate" type="text/template">
   {#people}
   <div class="person">Name: {firstName} {lastName}</div>
   {/people}
</script>

但许多开发人员(可以理解)不喜欢这样做,因为他们在脚本块内的代码编辑器中失去了 HTML 语法突出显示。我见过这样的解决方法:在 “text/html”模板中保持正确的 HTML 语法突出显示 https://stackoverflow.com/questions/14449312/keep-correct-html-syntax-highlighting-in-script-text-html-templates。这个问题并不是询问解决方法。

我知道一个危险是 Web 浏览器会尝试修复无效的 HTML,因此调用 $('#peopleTemplate').html() 将产生不可预测的结果。然而,我一时想不出任何例子来说明这一点。

Question

用 div 替换 script 标签还有哪些其他危险?

奖励:有人能想出一个很好的小提琴来说明浏览器 HTML 自动修复吗?


以下是浏览器自动修复问题的示例:http://jsfiddle.net/KPasF/ http://jsfiddle.net/KPasF/

模板是:

<table>
    <tr>
        {{#numbers}} <th> {{.}} </th> {{/numbers}}
    </tr>
</table>

数据是:

var json = { "numbers": [ 1, 2, 3 ] };

看小提琴http://jsfiddle.net/KPasF/ http://jsfiddle.net/KPasF/当模板位于隐藏的 div 中,然后再次位于脚本块中时,会产生不同的结果。

解释

当你把它放在隐藏的<div>,浏览器会剥离掉外面的内容<th>标签({{#numbers}} and {{#numbers}}小胡子标签)。这只剩下{{.}},它将绑定到 json 对象并呈现为[object Object]

将模板放入<script type='text/html'>块按您的预期工作,我们得到三个<th>'s

浏览器如何破坏位于模板内的模板的示例<div>代替<script>:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我们应该将模板包装在脚本块内? 的相关文章

  • jQuery 模板 - 将数据关联到模板 DOM 元素

    我正在使用 jQuery 模板插件渲染几个与此类似的行项目 var clientData name Rey Bango id 1 name Mark Goldberg id 2 name Jen Statford id 3 clientTe
  • 是否可以同步渲染dust.js模板?

    我正在尝试为客户端 HTML JS 模板系统编写一个适配器 以便在后台使用dust js 不幸的是 API 期望渲染操作同步发生 渲染的输出应该从 render 调用返回 Dust js 是异步的 并将渲染输出传递给回调函数 有没有办法解决
  • 使用nodejs预编译Emberjs Handlebar模板的简单方法?

    我非常喜欢 emberjs 并且希望在我的几个小型移动应用程序中采取下一步 并预编译我的 Ember Handlebars 模板作为我的构建过程的一部分 我宁愿远离 Ruby 而希望使用 node js 因为我更喜欢使用它 我相信我想使用的
  • Node.js:客户端模板与服务器端模板

    我已经尝试学习 Node js 几天了 但有一件事情我很困惑 JQuery 模板等客户端模板解决方案与 Jade for Node js 等服务器端解决方案之间有什么区别 各有什么用途 它们用在哪里 它们可以一起使用吗 如果有的话 有没有两
  • Express & Handlebars 的全球属性

    我使用 Handlebars 使用express3 handlebars 作为模板 使用 Passport 在 NodeJS 应用程序中进行身份验证 一切都很好 但我想知道是否有一种方法可以将 Passport 创建的 req user 对
  • Mustache.js 循环 JSON 数据

    谁能建议我的模板循环应该如何在以下示例中循环遍历 JSON 数据 演示在这里 http jsfiddle net Seefeld LbVEH http jsfiddle net Seefeld LbVEH 0 Dosage 25 Drug
  • 我可以对每个对象属性执行 jquery-tmpl 吗

    模板 each 指令非常适合迭代数组 如下所示 var myArray a b c 我想知道是否有等效的对象属性迭代 即 var myObj propOne a propTwo b propThree c 我想要一个可以让我输出的模板 ul
  • 如何在 Meteor 模板中打印键和值?

    我有来自助手的 JSON Name abc Age 24 Address street xyz street city zyz city country XY 我想打印带有键和值的地址
  • 如何将 Express 响应对象传递给前端 JS 对象

    我的控制器正在通过 res render 将纬度 经度数据发送到我的车把视图 res render coords viewModel viewModel 包含一个对象数组 每个对象都包含位置名称 纬度和经度 我想获取这些信息并在我的视图中的
  • 淘汰赛和 jQuery 自动完成

    淘汰值绑定不适用于 jquery 自动完成 如何让它发挥作用 我有一个模板
  • 使用把手解释 html 字符串但转义脚本标签

    我为我的页面引入了一串 html 并且我认为除了脚本标记之外它是 html 安全的 我知道三重大括号会转义 html 那么省略任何脚本标签的步骤是什么 例子 var foo h1 Foo h1 p bar p 然后在我的 hbs 中 foo
  • 异步加载车把模板

    我正在尝试编写一个函数 该函数将为我提供一个已编译的车把模板 我将所有模板都放在单独的文件中 使用 ajax 调用来获取模板并编译它以供使用 但我需要使用承诺 以便我可以实际使用它 function getTemplate name get
  • 从车把助手返回 html 对象

    我需要从车把助手发送一个 html 对象 如下所示 Handlebars registerHelper helper function Create an input object var inp
  • Handlebars.js Else If

    我使用 Handlebars js 进行客户端视图渲染 If Else 效果很好 但我遇到过需要 ELSE IF 的 3 路条件 这不起作用 if FriendStatus IsFriend div class ui state defau
  • 如何在带有流星的车把助手中使用多个参数?

    我正在尝试使用 Meteor 创建一个自定义助手 以下是此处的文档 https github com meteor meteor wiki Handlebars https github com meteor meteor wiki Han
  • 车把模板的文件扩展名

    我更改了车把模板的扩展名 并在调用 handlebarjs 编译函数的函数中引用了相同的扩展名 它工作得很好 没有任何问题 但我很好奇是否还有其他人尝试过 如果您认为这可能会因任何原因导致问题 请告诉我 出于某种原因 我觉得扩展名 hand
  • 错误“DocumentNotFoundError:找不到查询的文档”{_id:xxx}

    我克隆了对象 preventivo 当我运行此代码时 出现以下错误 节点 24548 UnhandledPromiseRejectionWarning 未处理的承诺拒绝 拒绝ID 1 DocumentNotFoundError 在模型 pr
  • 服务器和客户端上带有 Handlebars.js 的 Node.js

    我在 Node js 中有一个应用程序 使用 Expressjs 和 Handlebars 作为模板引擎 Expressjs 使用布局 然后渲染视图 布局 layout hbs 如下所示 body The body 当您访问路由时 在 No
  • 在 Ember 中将模型属性插入 Img 元素 URL

    我有一个模型image id财产 我有一个包含图像元素的模型视图 我需要将 id 插入图像元素的src属性来完成图像的 URL 以便我有效地执行此操作 img src 我的第一次尝试使用了 Handlebars 助手 img src 但这也
  • express-hbs 实例 registerAsyncHelper 奇怪的哈希值

    我正在使用express hbs nodejs模块 但在使用时遇到问题registerAsyncHelper 我需要在限制范围内编译布局 因为我创建了一个新的 Handlebars 实例 并在该实例中创建了一个助手 但是当我编译布局时 它返

随机推荐

  • STL容器如何折叠?

    我需要 Haskell 的类似物foldl功能可折叠任何 STL 容器 预期签名如下 template Iterator FoldingFunction Result Result foldl Iterator begin Iterator
  • Angular/SignalR 错误:无法完成与服务器的协商

    对我的服务器使用 SignalR 对我的客户端使用 Angular 当我运行客户端时 我收到以下错误 zone js 2969 OPTIONS https localhost 27967 chat negotiate 0 Utils js
  • 如何捕获每个 PID 的网络数据包?

    有人知道一种简单的方法来要求Linux 显示来自 来自google chrome的每个互联网数据包 或 显示来自 来自PID 10275的telnet进程的每个互联网数据包 吗 telnet 示例不太有用 因为我只能使用wireshark
  • React-native ios Podfile 问题与“use_native_modules!”

    在我的反应本机项目中 电子邮件受保护 cdn cgi l email protection 在我运行的 ios 目录中pod install并得到这个错误 Invalid Podfile file no implicit conversio
  • 允许使用应用程序内主页按钮导航至主页吗?

    我想知道应用程序内主页按钮的实现 该按钮可以将您从任何页面返回到主页 据我记得 WP7 开发指南不允许这样做 但我找不到任何相关的书面信息 有谁知道这写在哪里吗 通常不鼓励使用主页按钮 msdn源 http msdn microsoft c
  • C 中的 Malloc 与结构

    我有一个结构 struct numbers struct char numbers array 1000 struct numbers struct numbers some size 创建struct后 有一个整数作为输入 scanf d
  • 无法在构造函数中分配 this [重复]

    这个问题在这里已经有答案了 我正在尝试合并来自的道具values into this 以下会引发错误 我怎样才能做到这一点 this this values 你可以延长this with 对象 分配 https developer mozi
  • 如何处理自定义 PyYAML 构造函数中的递归?

    PyYAML 可以处理常规 python 对象中的循环图 例如 片段 1 class Node pass a Node b Node a child b b child a We now have the cycle a gt b gt a
  • 使用 Python,如何获取 Google protobuf 消息的二进制序列化?

    我在中看到函数 SerializeAsStringprotobuf Python 文档 http code google com apis protocolbuffers docs reference python google proto
  • selenium webdriver 支持 IE10 Metro?

    selenium webdriver 是否支持 IE10 Metro 默认情况下 测试在桌面模式下运行 有什么办法可以在 Metro 模式下测试吗 不 在撰写本文时 还不支持使用 Metro 界面进行自动化 对不起 然而 Selenium
  • 获取 User.identity 的名字和姓氏

    我有一个使用 Windows 身份验证设置的 Intranet 应用程序 我需要在标题中显示用户名和用户的姓名首字母 例如 欢迎j史密斯JS 到目前为止我做了什么 div class header profile name Welcome
  • 如果我在全局范围内声明一个没有大小的数组,会得到什么?

    In 答案之一 https codegolf stackexchange com a 5163 38214 in C 语言打高尔夫球的技巧 https codegolf stackexchange com q 2203 38214 我看到了
  • HTTP 标头中的额外空间在 HAProxy 上导致 400 错误

    我们最近从 Citrix 切换到 HAProxy 来实现负载平衡 问题是 对于某些请求 HAProxy 开始给出 400 错误 过去在 citrix 上运行良好 因此 我们暂时从基于 HTTP 的负载平衡转向基于 TCP 的负载平衡 经过进
  • PHP:只有在成功登录后才能访问文件夹的文件

    现在 在我的网站中 我成功登录后成功将用户重定向到www mysite com protected files redirect php页面通过在我的上使用类似的东西www mysite com login php page if logi
  • 检测 Windows 中的全屏模式

    我需要检测某些应用程序当前是否正在全屏模式下运行 如果是 那么我必须停止我的申请 那么 我怎样才能检测到呢 附注Win32 C 所有其他答案都相当黑客 Windows Vista Windows 7 及更高版本支持SHQueryUserNo
  • 如何通过 .Net MVC4 中的 JSON 通过 ajax 调用将复杂的视图模型传递到控制器操作中?

    因此 我尽可能多地搜索 Stack Overflow 但找不到这个特定问题的答案 如果已经有人问过这个问题 我们深表歉意 我找到了以下问题的答案 如何将对象 类传递给操作 如何通过查询字符串将对象传递给操作 如何通过 json 将对象传递给
  • 如何将 rpy2 指向现有的 R 安装?

    我安装了两个 R 有没有办法将 rpy2 明确指向其中一个 我相信 phonixor是对的 rpy2 使用它在路径中找到的 R 如果你想改变这一点 就改变你的道路 PATH path to r bin PATH
  • 如何检索局部变量?

    是否可以从我在 matlab 中运行的程序函数中检索局部变量 即我想从代码中检索一个变量 该变量未出现在输出中 提前致谢 下面描述了添加到函数本身以使变量在本地范围之外可用的代码 当您无法更改函数时 从外部当然无法更改范围 这是预期的 正确
  • 如何删除 Android 上的系统栏,我的意思是,所有

    我对 Android 编程还很陌生 几周前就开始了 Stackoverflow 这是我自 android 第一天以来最好的新油炸 第一次 我想真正寻求帮助 而不是在其他地方阅读它 主要是因为我无法在 任何地方 找到我的问题的答案 我正在使用
  • 为什么我们应该将模板包装在脚本块内?

    背景 所有 JS 模板引擎都建议将模板文本放入脚本块中 如下所示 但许多开发人员 可以理解 不喜欢这样做 因为他们在脚本块内的代码编辑器中失去了 HTML 语法突出显示 我见过这样的解决方法 在 text html 模板中保持正确的 HTM