客户端HTML最小化
Clientside HTML Minification
有没有办法用javascript进行这种缩小并更新DOM(客户端)
输入:
<div class="parentDiv">
<div class="childDiv">Some text</div>
<div class="childDiv">Some text</div>
</div>
输出:
<div class="parentDiv"><div class="childDiv">Some text</div><div class="childDiv">Some text</div></div>
我知道下载所有内容后进行缩小是没有用的。这里的重点是停止识别,在我的div之间创建间隙。我知道,如果我在标签之间放一个注释,就不会出现间隙,但在我的div标签之间有这么多注释,很难理解代码。
看到这个帖子,你就会明白我的意思。
我设法实现了我想要的,甚至为它创建了一个jQuery插件。
jQuery.fn.clearWhiteSpace = function () {
var htmlClone = this.html().replace(/'n[ ]*/g,"");
this.html(htmlClone);
return this;
}
$(".parentDiv").clearWhiteSpace();
我在jsfiddle 中写了一个例子
但是谢谢你的努力
如果是缩小版,则DOM不会更新。此外,客户端缩小也没有实现任何功能:下载速度不快,也不会从客户端混淆。
对于您所写的内容,我想您可以将''n'
替换为''
。
试试这个javascript缩小脚本——http://prettydiff.com/lib/jspretty.js
解析文档时需要小心,尤其是在属性中有特殊字符的情况下。您可以编写自己的DOM解析器,但是,为什么要重新发明轮子呢?
这里有一个很棒的解析器,用JavaScript编写:https://www.npmjs.com/package/html-minifier
说明已形成文件。
上述方法是"缩小"生产代码;但是,如果是视觉间距问题,请参阅以下内容:
更新:
当涉及到块元素时,"空白"通常被忽略
为了确保您的内联块元素不会被"空白"分隔,您可以将您的(块)代码排列在彼此下方,表明分隔它们的不是"空间";除此之外,以下才是真正重要的:
正确的CSS&HTML
-
确保所有HTML标记都正确"配对"——每个打开的标记都有一个关闭的标记。这不包括像
<img />
或<input />
这样的"无效标签",因为它们是"自关闭的"。 -
如果需要相邻放置块,请使用样式为
display:inline-block
的带有CSS的<div>
标记。您还可以使用"表单元格"-不必是<td>
标记,因为您也可以使用样式为:display:table-cell
的CSS来实现这一点。 -
通过将元素的样式指定为:
float:left
(或"right"),也可以将元素紧密地包装在一起(如上所述)。 -
将样式放在CSS样式表中是一种很好的做法,而不是内联,因为后者会使代码无法管理;然而,有些样式表是持久的(见下文),覆盖这些样式的唯一方法是使用内联样式。
-
如果你在别人的代码库中进行编码,而上面的都不起作用,你可以制作一些自己的样式表,在每个属性后面用单词
!important
覆盖其他样式表。您可以使用它来覆盖任何属性,但在这种情况下,它通常是margin
或border-...
-
最后,如果不需要元素,请确保元素之间没有
no-braking-spaces
;这些看起来像这样:
如果你需要更多关于如何编写现代HTML5标记和CSS3样式表语言的信息,"Mozilla开发者网络"是一个很好的参考:https://developer.mozilla.org
所以让我们尝试解决这个问题:"这里的重点是停止缩进,在我的div之间创建间隙。"。
在尝试缩小HTML代码或通过在HTML标记之间添加空白注释对其进行编码之前,您是否考虑过先使用inline-block
或CSS重置?
链接的答案页讨论了使用inline-block
来消除HTML元素之间的间距。这两页还讨论了重置字体样式以解决间距问题。
CSS重置可用于修复元素之间的间隙。以下是最受欢迎的CSS重置列表http://cssreset.com如果需要,应该可以很容易地扩展它们以覆盖任何字体设置,从而规范字体如何处理空白字符。
因此,不需要在HTML标记之间注入空注释,以解决空白字符的间距问题。如果使用CSS来修复样式,那么HTML将是可读的。如果HTML被缩小,它将更难阅读&调试。我建议不要使用JavaScript缩小HTML。不如试着用CSS来解决间距问题。
(至于缩小是如何在它的引擎盖下工作的…请参阅我对这个SO问题的回答。)
使用香草JS在浏览器中最小化HTML。
const minify_html = (dom_node) => {
dom_node.childNodes.forEach(node => {
const isTextNode = node.nodeType === 3;
const isEmpty = node.nodeValue.trim().length === 0;
if (isTextNode && isEmpty){
dom_node.removeChild(node);
}
});
};
我创建了一个包含1000个元素的示例,我的计算机可以在不到15毫秒的时间内缩小html,但它可能会更慢或更快,这取决于运行代码的设备。
https://jsfiddle.net/shwajyxr/
- 最小化时暂停Javascript动画
- 全局窗口热键在最小化chrome窗口时调用js函数
- Grunt-将多个文件最小化/处理为一个文件
- Bootstrap一页导航Fluid网站最小化问题
- 最小化js时出现Gulp错误
- 最小化CSS/JS文件,并使用命令行创建一个文件
- 在Dojo构建期间,在最小化期间关闭文件编译
- Angular 2捆绑和最小化
- 剑道窗口还原在最小化然后还原时不调用调整大小事件
- 最小化在javascript中客户端/服务器之间发送的数据
- 咕噜咕噜 - 最小化指令
- 最小化Javascript和HTML代码
- 客户端HTML最小化
- 最小化窗口时HTML视频暂停
- 使用 JS 实现 HTML 最小化器插件
- JQuery最小化&最大化HTML Div
- HTML、JavaScript和CSS最小化的缺点是什么?
- HTML CSS JS的最小化架构
- 将html节点转换为一行字符串(最小化)
- 最小化的侧面板在html