pyramid_html_minifier
项目描述
pyramid_html_minifier 引入了对由 Chameleon 模板(基于 ZPT 的模板实现)提供支持的 Pylons/Pyramid 应用程序的 安全 html 最小化,且 无额外开销。
Chameleon 模板仍然是有效的 XML,因此可以使用不太激进的选项安全地进行最小化。
使用 pyramid_html_minifier 获得的收益
带宽和性能。 节省宝贵的千字节(根据您的模板约为50-80%)。这对带宽使用和性能提升非常重要,尤其是如果您需要管理一个大型且流量密集的 Pylons/Pyramid 基础网站。请参阅 https://npmjs.net.cn/package/html-minifier
无额外开销。 最小化基于构建步骤(类似于基于 gulp/grunt 的 collectstatic)。因此无需即时最小化
安全模板/html最小化。即使在 宏 和 插槽 的情况下也能正常工作。这种模式在生产网站上使用一年后没有出现任何问题。因此,可以说经过一年的隔离期且没有任何问题后,这是一个安全的模式。您只需记住禁用过于激进的选项(参见下一部分)
pyramid_html_minifier 做什么
pyramid_html_minifier 引入了什么
一个自定义的 .html 渲染器(解释为 Chameleon 模板)
支持 dist 与 app 的对比,这在 Yeoman 项目中常用。在开发阶段使用 app,而在生产模式(基于模板压缩构建)下使用 dist。
这样,您就可以使用 Yeoman 的工作流程开始开发静态模拟应用(即使是基于大量 JavaScript 的),并将您的通过宏和插槽增强的修改过的 html 文件作为 Chameleon 模板使用。
如何使用 pyramid_html_minifier
在这里您可以查看如何在您的 Pylons/Pyramid 网络应用程序中启用 Chameleon 模板压缩。
将您的 Chameleon 模板文件放在 templates/app/master.html,并将其压缩版本放在 templates/dist/master.html(.html 扩展名非常重要)。显然,不要手动进行压缩,将 Yeoman 添加到您的开发工作流程中,并使用相关的自动化工具。此包不提供任何 gulp 或 grunt 配置,您应该创建自己的设置。
使用 renderer="your_plugin:templates/{0}/master.html" 注册一个正常的 Pylons/Pyramid 可调用视图。这里的 {0} 仅是一个占位符,pyramid_html_minifier 将根据您的设置进行填充。请参阅下一步。
通过在 .ini 文件中添加 pyramid_html_minifier.placeholder 设置来告诉 pyramid_html_minifier 您是想选择标准模板还是压缩模板。典型的开发值是 app(默认值),而 dist 通常用于生产环境。示例:pyramid_html_minifier.placeholder = dist
将 pyramid_html_minifier 添加到您的 pyramid.includes 设置中。
最终的 .ini 文件应如下所示
pyramid.includes = ... pyramid_html_minifier ... pyramid_html_minifier.placeholder = dist
安全压缩选项
我建议将构建过程自动化,将 Yeoman 的工作流程集成到您的 Pylons/Pyramid 项目中,以获得最佳的开发体验。
我建议使用 html-minifier 压缩器及其友好的 gulp-html-minifier,并禁用过于激进的 HTML 压缩选项。
特别是,请确保启用 keepClosingSlash 选项,并禁用 removeAttributeQuotes。
在这里您可以看到一个实际的工作配置示例
const htmlMinifierOptions = { collapseBooleanAttributes: true, collapseWhitespace: true, removeComments: true, removeCommentsFromCDATA: true, removeEmptyAttributes: true, removeRedundantAttributes: true, useShortDoctype: true, keepClosingSlash: true, } ... gulp.task('html', ['styles'], () => { const assets = $.useref.assets({searchPath: ['.tmp', 'app', '.']}); return gulp.src('app/*.html') .. .pipe($.if('*.html', $.htmlMinifier(htmlMinifierOptions))) ... .pipe(gulp.dest('dist'));
为什么选择 Yeoman
为什么选择 Yeoman
更好的、更现代的 Web 开发体验
压缩和/或资源连接(图像、CSS、JavaScript)
更多。请参阅 https://yeoman.node.org.cn/
链接
在这里您可以找到一个使用 pyramid_html_minifier 的项目
关于使用相同模式的案例研究的更多详细信息
0.1 (2015-08-03)
初始版本