现在很多产品都是C端的产品,而大部分公司的核心业务就是C端的客户群体,个别的公司的核心是B端,那么C端的客户就是他们为B端客户最好的贡献者,至于其中奥秘懂得自然懂。
那么既然大部分公司的核心是C端,C端又分为很多产品比如WEB网址,小程序,APP,Windows应用等等。而现在WEB产品还是大部分的主流产品,使用很多的前端框架就是VUE,UIAPP,REACT。而现在的开发模式都是前后端分离开发,那么今天我就为大家分享一下我对VUE项目的前端的性能优化方案。
玩过服务器的小伙伴们应该知道服务的带宽是有限制,而很多公司会去选择轻量云服务器,这里简单介绍一下什么是轻量云服务器。轻量云服务器的带宽流量就是有限制的,而服务器的配置不能进行单一升级,比如我想升级一下带宽这样就是不可以的,但是在服务器中就是可以,可以进行单一配置升级。而且服务器的带宽是非常的昂贵的,比如1M的带宽这样用户访问你的网站的时候速度就会很慢很慢,如果是动态网站的话等完整的页面渲染出来估计大概要10秒以上。那么我们就可以对其前端的build生成代码进行压缩,配置nginx的压缩率。对资源进行压缩已达到提升前端用户访问页面的速度,减少页面的渲染时间。
废话就不多说了,直接开始上代码
相信大家搞VUE开发的应该都知道webpack这个东西吧,现在vue的脚手架的最新版本就是5.0.3版本
使用命令
vue create app
创建的项目目录就会简单很多很多,
目录就是public src没了
所有的vue配置都集成到了vue.config.js中,在这里可以配置整个项目的所有配置包括webpack
详细配置可以参考我的上一篇文章,vue.config.js配置注释详解
今天就介绍一下几个对前端项目的优化的小中间件,
安装命令:
yarn add -D uglifyjs-webpack-plugin 或 npm install uglifyjs-webpack-plugin -save -dev
在项目中引入和使用
//打包配置自动忽略console.log等
const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
//启用代码压缩
plugins.push(
new UglifyJsPlugin({
uglifyOptions: {
compress: {
warnings: false,
drop_console: true,
drop_debugger: false,
pure_funcs: ["console.log"] //移除console
}
},
sourceMap: false,
parallel: true
})
),
详细使用说明:uglifyjs-webpack-plugin - npm (npmjs.com)
但是这个插件好像挺久的了,推荐一个新的terser-webpack-plugin
const Webpack = require('webpack')
// 引入该插件
const CompressionWebpackPlugin = require('compression-webpack-plugin')
// 引入压缩插件
const TerserPlugin = require('terser-webpack-plugin')
// 匹配此 {RegExp} 的资源
const productionGzipExtensions = /\.(js|css|json|ttf)(\?.*)?$/i
module.exports = {
transpileDependencies: ['vuetify'],
assetsDir: 'assets', // 静态资源目录(js,css,img,fonts)这些文件都可以写里面
productionSourceMap: false,
configureWebpack: {
plugins: [
new CompressionWebpackPlugin({
filename: '[path][name].gz[query]',
algorithm: 'gzip',
test: productionGzipExtensions,
threshold: 0,
minRatio: 0.8,
}),
new Webpack.IgnorePlugin(/^\.\/locale$/, /moment$/),
],
optimization: {
minimizer: [
new TerserPlugin({
terserOptions: {
ecma: undefined,
warnings: false,
parse: {},
compress: {
drop_console: true,
drop_debugger: false,
pure_funcs: ['console.log'], // 移除console
},
},
}),
],
},
},
}
详细使用说明:terser-webpack-plugin - npm (npmjs.com)
安装命令:
yarn add -D compression-webpack-plugin 或 npm install compression-webpack-plugin -save -dev
在项目中引入和使用:
const CompressionWebpackPlugin = require("compression-webpack-plugin"); // 开启gzip压缩, 按需引用
plugins.push(
new CompressionWebpackPlugin({
filename: '[path].gz[query]',
algorithm: 'gzip',
test: productionGzipExtensions,
threshold: 10240,//大于10k的进行压缩
minRatio: 0.8,
})
);
安装命令:
yarn add --dev html-webpack-plugin 或 npm i --save-dev html-webpack-plugin
在项目中引用
const { resolve } = require('path')//nodejs 方法
const HtmlWebpackPlugin = require('html-webpack-plugin')
export.moduls= {
entry: {
one: ['./src/index1.js', './src/index2.js'],
two:'./src/indexTwo.js'
},
mode: 'development',
output: {
filename: '[name].js',
path: resole(_dirname, 'build')
},
module: {
rules: []
},
plugins: [
//默认:创建空的html 自动引入打包的资源(js css)
// template 自定义设置入口html filename 自定义文件名
new HtmlWebpackPlugin({
template: './src/index.html',
filename: 'index.html',
minify: {
collapseWhitespace: true, //html打包去除空格
removeComments: true // 移除注释
},
chunks:['one'], //指定引用的js
})
]
}
安装命令:
yarn add -D purgecss-webpack-plugin 或 npm install purgecss-webpack-plugin -save -dev
在项目中引用
//用于生产环境去除多余的css
const PurgecssPlugin = require("purgecss-webpack-plugin")
//去掉不用的css 多余的css
plugins.push(
new PurgecssPlugin({
paths: glob.sync([path.join(__dirname, "./**/*.vue")]),
extractors: [
{
extractor: class Extractor {
static extract(content) {
const validSection = content.replace(
/