Hexo High一下以及压缩排版问题
背景介绍
集成Hight一下以及Gulp-html压缩之后出现的问题:
High一下功能多次点击,会创建多个Audio对象,导致同时播放多次音乐,重音。解决办法:判断是否添加Audio对象,如果存在则判断是否播放,播放状态不做任何处理,未播放则调用播放方法。如果不存在则调用后续创建音乐对象的处理。
Gulp-html压缩会导致我们页面故意添加的空格排版也会被清空掉。查询Gulp-html的API,发现没有这种配置,而且尝试去组合配置,最后发现还是不行。实在没办法后,只能看压缩的源代码。核心思路:就是找到要压缩的地方,对某一类或者几类标签不做压缩处理。
var audios = document.getElementsByTagName("audio");
if(audios.length > 0){
if(!audios[0].ended){
return;
}else{
audios[0].play();
return;
}
}
Gulp-html压缩
gulp对HTML的压缩有两种框架gulp-minify-html和gulp-htmlmin。
gulp-minify-html是基于minimize做的包装,其核心压缩的处理都是在minimize中完成的。
gulp-htmlmin是基于html-minifier的包装。
本文暂时只讨论基于html-minifier的改造,设置多个标签不做压缩处理。
找到html-minifier压缩的核心代码:
绝对路径:blog/node_modules/gulp-htmlmin/node_modules/html-minifier/src/htmlminifier.js
翻阅源码发现压缩是通过HTMLParser解析DOM的方式。轮训每个标签,在通过正则表达式替换指定字符。(还有更多的特殊处理,这里就不细节描述。)
定位到如下一行:
chars: function(text, prevTag, nextTag) {
prevTag = prevTag === '' ? 'comment' : prevTag;
nextTag = nextTag === '' ? 'comment' : nextTag;
添加过滤处理:
// 当前标签为p/br/strong/div ,不做处理直接返回
if(currentTag === undefined || currentTag === 'p' || prevTag === 'p'
|| nextTag === 'p' || currentTag === 'br'|| currentTag === 'strong'
|| currentTag === 'div'){
buffer.push(text);
return;
}
Hexo High一下以及压缩排版问题的更多相关文章
- Hexo构建Blog系列
Hexo是一个开源构建blog框架,基于nodejs研发.可以自由切换主题,插件等功能,实现自已酷炫博客需求. 下面是基于hexo实践所产出的一些心得,供大家参考. 基础 Hexo 搭建 Hexo 与 ...
- TextField 、 FTE、 TLF 的使用情景和简单说明
作者:tiangej 来源:CSDN 原文:https://blog.csdn.net/tiangej/article/details/16859239 版权声明:本文为博主原创文章,转载请附上博文链 ...
- hexo 博客支持PWA和压缩博文
目标网站 https://blog.rmiao.top/ PWA yarn add hexo-offline 然后在root config.yml里新增 # offline config passed ...
- Hexo瞎折腾系列(5) - 使用hexo-neat插件压缩页面静态资源
为什么要压缩页面静态资源 对于个人博客来说,优化页面的访问速度是很有必要的,如果打开你的个人站点,加载个首页就要十几秒,页面长时间处于空白状态,想必没什么人能够忍受得了吧.我个人觉得,如果能把页面的加 ...
- hexo next主题深度优化(六),使用hexo-neat插件压缩页面,大幅度提升页面性能和响应速度。
文章目录 隆重感谢: 背景 开始 试水 成功的案例 安装插件,执行命令. hexo _config.yml文件添加 坑 跳过压缩文件的正确配置方式 压缩html时不要跳过.md文件 压缩html时不要 ...
- hexo访问优化之--------gulp压缩
hexo访问优化之--------gulp压缩 hexo生成的博客是静态html页面,当有很多静态资源时,加载速度会非常慢,且github服务器在国外,导致网页加载速度非常差 gulp压缩 gulp是 ...
- Hexo页面优化和音乐的心得
灵感 这两天在添加“留言”以及“关于”页面,准备先简单设计一下自已的页面.留言页面可以放置一些自已比较感兴趣的音乐.以及一些JS特效,再集成一个第三方的留言功能.关于页面可以放置一些简单的联系方式.以 ...
- [还不会搭建博客吗?]centos7系统部署hexo博客新手入门-进阶,看这一篇就够了
@ 目录 *本文说明 请大家务必查看 前言 首先介绍一下主角:Hexo 什么是 Hexo? 环境准备 详细版 入门:搭建步骤 安装git: 安装node: 安装Hexo: 进阶:hexo基本操作 发布 ...
- hexo博客-性能优化
前言 刚开始搭建博客的时候觉得很好玩,可是玩的久了,问题慢慢就出来了,就跟谈恋爱一样==.比如现在我访问博客的时候就感觉慢的要死,不可否认,使用hexo搭建服务器方便快捷,但是由于github作为服务 ...
随机推荐
- hadoop-08-关闭THP服务
hadoop-08-关闭THP服务 #查看THP服务cat /sys/kernel/mm/redhat_transparent_hugepage/enabledcat /sys/kernel/mm/r ...
- [Javascript] Required function arguments in Javascript
In Javascript, all function arguments are optional by default. That means if you ever forget to pass ...
- [LeetCode]Subsets II生成组合序列
class Solution {//生成全部[不反复]的组合.生成组合仅仅要採用递归,由序列从前往后遍历就可以. 至于去重,依据分析相应的递归树可知.同一个父节点出来的两个分支不能一样(即不能与前一个 ...
- UVA 11020 - Efficient Solutions(set)
UVA 11020 - Efficient Solutions 题目链接 题意:每个人有两个属性值(x, y).对于每个人(x,y)而言,当有还有一个人(x', y'),假设他们的属性值满足x' &l ...
- HDU 4288-Coder(模拟)
Coder Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Su ...
- OpenCASCADE直线与平面求交
OpenCASCADE直线与平面求交 在<解析几何>相关的书中都给出了直线和平面的一般方程和参数方程.其中直线的一般方程有点向式形式的. 由于过空间一点可作且只能作一条直线平行于已知直线, ...
- angularjs 事件向上向下传播
<!DOCTYPE HTML> <html ng-app="myApp"> <head> <meta http-equiv="C ...
- grpc编译错误解决
berli@berli-VirtualBox:~/grpc$ make [MAKE] Generating cache.mk [C] Compiling src/core/lib/s ...
- java操作文件创建、删除
java操作文件创建.删除: package test; import java.io.File; import java.io.IOException; import org.slf4j.Logge ...
- Git放弃本地更改恢复到资源库版本
使用git版本控制工具在本地clone一份代码后,如果发现修改错误想恢复到资源库版本,下面两行可以轻松加愉快的搞定: git clean -xdf git checkout -f git的更多详细用法 ...