html文字压缩,利用html-minifier制作thinkjs中间件,压缩html文本输出

9ac5e4e30859fb63569e5fad0d8d2230.png 本博客不欢迎:各种镜像采集行为,请尊重知识产权法律法规。大家都是程序员,不要闹得不开心。

本文中,苏南大叔将结合thinkjs的相关middleware文章,做一个具体的任务需求。需求的内容,就是压缩html文本输出。在前面的文章中,苏南大叔曾经利用php的tidy和smarty做了相同的事情。本文中,苏南大叔将要把这个功能需求,移植到thinkjs框架内。

效果展示

因为这个需求似乎很难听懂发生了什么,所以这里先做个效果展示:

3a39448f19189e01a13a062df63ff476.png利用html-minifier制作thinkjs中间件,压缩html文本输出(图3-1)

html输出的文本进行了压缩,去除了多余的回车换行空格等等。

代码展示

src/middleware/mini.js://sunan

module.exports = (options, app) => {

return async (ctx, next) => {

await next();

let body = ctx.body;

if (body && think.isString(body)) {

//body = body.replace(/\s+/g, ' ');

body = require('html-minifier').minify(body, {

minifyCSS:true,

minifyJS:true,

removeComments: true,

collapseWhitespace: true,

collapseBooleanAttributes: true,

removeAttributeQuotes: true,

removeEmptyAttributes: true

});

ctx.body = body;

}

}

};

src/config/middleware.js://......

module.exports = [

{

handle: 'mini',

},

//......

]

这本例子中,mini这个中间件需要放置到配置项目的第一个位置,但是这并不意味着他是第一个执行的。或者这样描述似乎更合适:它是第一个执行的中间件,但是确是最后一个执行完毕的中间件。只是因为一句话:await next()。关于await和sync的内容,请关注苏南大叔的后续文章。

80fa7f7da2e19abac8bd1af926ea934a.png利用html-minifier制作thinkjs中间件,压缩html文本输出(图3-2)

额外信息

这里的html-minifier是第三方组件,所以,需要安装一下。sudo npm install html-minifier --save

a3e609efc1a0570043d48ad23769c1cd.png利用html-minifier制作thinkjs中间件,压缩html文本输出(图3-3)

结论

本文以倒序的方式,描述了苏南大叔的第一个基于thinkjs的中间件demo。其中主体思路,是thinkjs作者welefen提供的。苏南大叔的思路下,没有考虑到await next()的问题,在middleware的99%位置,通过ctx.body获取到的都是undefined。这个就是主要的问题所在了。

好,更多thinkjs的精彩内容,请继续关注苏南大叔的后续文章。https://newsn.net/tag/thinkjs/ 。

93ddba5b688a6967c0a88c0220992c34.gif

e6eebe3032abd035b5cf072fe954fec6.png 如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。

9ac5e4e30859fb63569e5fad0d8d2230.png 本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值