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作为服务 ...
随机推荐
- jeesite 简介
jeesite 简介 https://github.com/thinkgem/jeesite http://jeesite.com/
- [Angular + TsLint] Disable directive selector tslint error
@Directive({ // tslint:disable-next-line:directive-selector selector: '[scrollable]' })
- ORA-06553:PLS-306:wrong number or types of arguments in call to ''
1.错误描写叙述 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/ ...
- ftoa浮点型转换成字符串
#include <stdio.h> bool ftos(float num,char *s,int n) { int temp; float t=num; int pn=0; b ...
- vs输出窗口,显示build的时间
https://stackoverflow.com/questions/82128/displaying-build-times-in-visual-studio Tools... Options.. ...
- django 笔记12 session
第一步写好函数,然后生成数据库session表 python manage.py makemigrations python manage.py migrate session原理: .Session ...
- Dictionaries
A dictionary is like a list, but more general. In a list, the indices have to be integers; in a dict ...
- 安卓开发--HttpClient
package com.zx.httpclient01; import android.app.Activity; import android.os.Bundle; import android.v ...
- BZOJ 2115 DFS+高斯消元
思路: 先搞出来所有的环的抑或值 随便求一条1~n的路径异或和 gauss消元找异或和最大 贪心取max即可 //By SiriusRen #include <cstdio> #inclu ...
- BZOJ 1024 SCOI2009 生日快乐 暴搜
思路:eng...按照题意搜就好了 (一定要注意题面的n<=10--) 枚举断点...反正n<=10不怂 //By SiriusRen #include <cstdio> #i ...