为了提升英文水平,尝试着翻译一些英文技术文章,首先就从这个Vue的小技巧文章开始,目前英文版一共22篇。计划用时2~3个月翻译完成。css
目前进度[5/22]html
Remove unused CSS with PurgeCSSvue
咱们能够用不一样的方式处理Web性能,其中之一就是删除咱们在应用程序中不使用的全部JS和CSS。git
就CSS而言,当咱们使用Bootstrap、Bulma或Tailwind等框架,以及面对大型应用程序或遗留应用程序时,这一点甚至更为重要。github
PurgeCSS是一种在应用程序中比较字符串来删除未使用的CSS的工具。这有一些优势,可是也有一些问题,因此请对后面的白名单部分保持关注。框架
例如,VueDese的网站是使用Tailwind在nuxt(静态生成)上构建的,它使用purgecss优化生成的CSS。工具
若是我禁用PurgeCSS,你会看到Tailwind css有485Kb。post
若是我激活PurgeCSS,它会降到16kb:性能
每一个项目中PurgeCSS配置会有所不一样。它能够设置为Webpack插件或Postcss插件。优化
在VueDese这个案例中,我使用Postcss插件。因此,我有一个postcss.config.js
文件,内容以下:
const purgecss = require("@fullhuman/postcss-purgecss");
const plugins = [...];
if (process.env.NODE_ENV === "production") {
plugins.push(
purgecss({
content: [
"./layouts/**/*.vue",
"./components/**/*.vue",
"./pages/**/*.vue"
],
whitelist: ["html", "body"],
whitelistPatternsChildren: [/^token/, /^pre/, /^code/],
})
);
}
module.exports = { plugins };
复制代码
基本上,你只须要设置在哪里(文件夹路径)使用Content属性查找匹配的类。
另外,你可能要设置白名单来标记一些类,省得被误删除。你至少须要在html和body以及任何动态类中这样作。
在个人案例中,我会使用prismjs高亮代码块,而且添加了几个token
类,以及pre
和code
标签中的样式。为了排除它们(不使用PurgeCSS删除),我须要使用whitelistPatternsChildren
属性。
此外,Tailwind还须要一个自定义提取器(这里参考得是Tailwind文档上得方法),以便与purgecss一块儿正常工做。总之,VueDese的整个postss.config.js
文件包含如下内容:
const join = require("path").join;
const tailwindJS = join(__dirname, "tailwind.js");
const purgecss = require("@fullhuman/postcss-purgecss");
class TailwindExtractor {
static extract(content) {
return content.match(/[A-Za-z0-9-_:\/]+/g) || [];
}
}
const plugins = [require("tailwindcss")(tailwindJS), require("autoprefixer")];
if (process.env.NODE_ENV === "production") {
plugins.push(
purgecss({
content: [
"./layouts/**/*.vue",
"./components/**/*.vue",
"./pages/**/*.vue"
],
whitelist: ["html", "body"],
whitelistPatternsChildren: [/^token/, /^pre/, /^code/],
extractors: [
{
extractor: TailwindExtractor,
extensions: ["html", "vue"]
}
]
})
);
}
module.exports = {
plugins
};
复制代码
今天就到此为止!
你能够在线阅读文章tip online(能够 复制/粘贴 代码),可是请你记住,若是你喜欢,要和全部同事分享VueDose。
下周见。
当你的项目足够大的或者足够复杂或者有很大的遗留包袱的时候,你能够经过一些手段,去删除代码中无用的js和css,这样作会大大减小你的项目体积!这篇文章介绍了使用Postcss插件采用PurgeCSS的方式去删除css,而且使用应用了Tailwind框架案例作出了代码说明。
关于更多的PurgeCSS请前往github。
关于去除无用css还有一个好用的库UnCSS,想要了解详情请前往github
水平有限,不免有错漏之处,望各位大大轻喷的同时可以指出,跪谢!
一、翻译:提升vue.js中大型数据的性能
二、翻译:测量vue应用运行时的性能!
三、使用PurgeCSS删除未使用的CSS
四、翻译:Vue.js 2.6.0 中的新指令v-slot
五、翻译:使用v-bind和v-on的自适应组件