Javascript 如何编写长可读的innerHTML?

Javascript 如何编写长可读的innerHTML?,javascript,innerhtml,readability,Javascript,Innerhtml,Readability,我有一长段HTML必须分配给innerHTML(混合中添加了一些服务器端ASP值) 在标准的“好”布局中编写HTML有没有好的做法?例如,使用适当的缩进,这样可以将HTML分配给innerHTML (我们不能假设总是使用特定的IDE或代码编辑器。) 举个例子:下面是我在重构代码时经常遇到的一种模式: <SCRIPT LANGUAGE="JavaScript"> <!-- window.opener.document.getElementById("overlay").s

我有一长段HTML必须分配给innerHTML(混合中添加了一些服务器端ASP值)

在标准的“好”布局中编写HTML有没有好的做法?例如,使用适当的缩进,这样可以将HTML分配给innerHTML

(我们不能假设总是使用特定的IDE或代码编辑器。)

举个例子:下面是我在重构代码时经常遇到的一种模式:

<SCRIPT LANGUAGE="JavaScript">
<!--
    window.opener.document.getElementById("overlay").style.position = "fixed";
    window.opener.document.getElementById("overlay").style.width = "700px";
    window.opener.document.getElementById("overlay").style.top = "100px";
    window.opener.document.getElementById("overlay").innerHTML = "<DIV STYLE=\"margin:25px 0px -10px 0px\"><DIV CLASS=\"error\" STYLE=\"height:auto; background:#ffe5e5; background-image:url(/images/icon_alert.png); background-position:5px 5px; background-repeat:no-repeat; border:1px solid #c00; -moz-border-radius:7px; -webkit-border-radius:7px; border-radius:7px; margin:10px 0px; padding:10px 10px 10px 35px; color:#c00\">There was a problem ... ;


一种解决方案是使用客户端模板,例如与jQuery一起使用。然后,您可以在单独的.HTML文件中保持HTML的良好格式,并与代码的其余部分完全分离。像handlebar这样的库还提供了将变量注入模板的规定


请注意,您需要加载模板。在开发模式下,您可以通过浏览器的HTTP请求加载这些模板,或者如果您使用Grunt、Gulp或webpack,则可以将模板构建到JavaScript应用程序文件中,这样就不需要额外的HTTP请求。对于生产模式,您需要大量考虑将模板创建到应用程序有效载荷中,以尽量减少HTTP请求的数量。

< P>一种解决方案是使用客户端模板,例如与jQuery一起使用。然后,您可以在单独的.HTML文件中保持HTML的良好格式,并与代码的其余部分完全分离。像handlebar这样的库还提供了将变量注入模板的规定

请注意,您需要加载模板。在开发模式下,您可以通过浏览器的HTTP请求加载这些模板,或者如果您使用Grunt、Gulp或webpack,则可以将模板构建到JavaScript应用程序文件中,这样就不需要额外的HTTP请求。对于生产模式,您需要大量考虑将模板创建到应用程序有效载荷中,以尽量减少HTTP请求的数量。

TL;博士

始终尽量避免使用innerHTML(通过使用createElement()或createFragment()或通过切换某些可见性属性)

永远不要使用innerHTML,它会导致页面的完整布局和绘制,实际上相当于树的晃动。

TL;博士

始终尽量避免使用innerHTML(通过使用createElement()或createFragment()或通过切换某些可见性属性)


永远不要使用innerHTML,它会导致页面的完整布局和绘制,实际上相当于树的抖动。

如果要将值写入
innerHTML
,真的没有必要缩进或格式化标记,因为无论如何它都将以相同的方式呈现。@JustinNiessner-这是为了我们所有必须使用HTML的可怜的SAP的利益。可以将其视为缩小或模糊处理的反面。如果必须以编程方式插入内容,则
innerHTML
可能是最糟糕的选择之一。一个原因是它很容易出错并存在安全漏洞。相反,只需以编程方式创建内容:
document.create(“div”)
,例如,然后使用
element.className=“myClass”
或其他方法对其进行操作。jQuery将以更简洁的形式包装DOM操作,但在幕后也会这样做。可能更好的办法是使用一些模板库,这样看起来更容易,也更易于维护。我认为“问题”是试图将信息(html,作为文本)源代码化为JavaScript字符串。如果您正在将值写入
innerHTML
,真的没有必要缩进或格式化标记,因为无论如何它都将以相同的方式呈现。@JustinNiessner-这是为了我们所有必须使用HTML的可怜的SAP的利益。可以将其视为缩小或模糊处理的反面。如果必须以编程方式插入内容,则
innerHTML
可能是最糟糕的选择之一。一个原因是它很容易出错并存在安全漏洞。相反,只需以编程方式创建内容:
document.create(“div”)
,例如,然后使用
element.className=“myClass”
或其他方法对其进行操作。jQuery将以更简洁的形式包装DOM操作,但在幕后也会这样做。可能更好的办法是使用一些模板库,这样看起来更容易,也更易于维护。我认为“问题”是试图将信息(html,作为文本)源代码转换成JavaScript字符串;博士(除了我很难弄清楚那棵树到底是什么,人们可能真的在摇晃)。现在你能提供物质吗?我刚刚用一个你可以使用的例子更新了这个问题;博士(除了我很难弄清楚那棵树到底是什么,人们可能真的在摇晃)。现在你能提供物质吗?我刚刚用一个你可以使用的例子更新了这个问题。