最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • vue cli3 性能优化实战

    正文概述 掘金(知识追寻者)   2021-04-05   490

    性能优化

    知识追寻者搞了个人站点后,心血来潮来了一波前端性能优化实战!!! 个人站点地址:zszxz.com/index

    生成分析报告

    在 packge.json 中引入"analyz": "vue-cli-service build --mode analyz"

    如下示例

    "scripts": {
            "serve": "vue-cli-service serve",
            "build": "vue-cli-service build",
            "lint": "vue-cli-service lint",
            "analyz": "vue-cli-service build --mode analyz"
        },
    

    打包时使用如下命令打包,成功后会在 dist 目录下生成 report.html

    效果示例

    vue cli3 性能优化实战

    组件按需引入

    在 babelrc.config.js 中按如下配置 可以参考官方文档:element.eleme.cn/#/zh-CN/com…

    module.exports = {
        presets: [
            '@vue/cli-plugin-babel/preset'
        ],
        // element 按需引入配置
        plugins: [
            [
                "component",
                {
                    "libraryName": "element-ui",
                    "styleLibraryName": "theme-chalk"
                }
            ]
        ]
    }
    

    main.js 中按需引入

    import {
        Pagination,
        Button,
        Dialog,
        Menu,
        Submenu,
        MenuItem,
        MenuItemGroup,
        Input,
        Form,
        FormItem,
        Tag,
        Breadcrumb,
        BreadcrumbItem,
        MessageBox,
        Message,
        // Notification,
        Tree,
        Image,
        // TimeSelect,
        // TimePicker,
        DatePicker,
        Avatar,
        Row,
        Col,
        Container,
        Header,
        Aside,
        Main,
        Footer,
        Card,
        Divider,
        Tooltip,
        Table,
        TableColumn,
        Select,
        Option,
        OptionGroup,
        Switch,
        Alert
    } from 'element-ui';
    
    Vue.use(Pagination);
    Vue.use(Button);
    Vue.use(Dialog);
    Vue.use(Menu);
    Vue.use(Submenu);
    Vue.use(MenuItem);
    Vue.use(MenuItemGroup);
    Vue.use(Input);
    Vue.use(Form);
    Vue.use(FormItem);
    Vue.use(Tag);
    Vue.use(Breadcrumb);
    Vue.use(BreadcrumbItem);
    // Vue.use(MessageBox);
    // Vue.use(Message);
    Vue.component(MessageBox.name, MessageBox);// 解决页面弹出框问题
    // Vue.use(Notification);
    Vue.use(Tree);
    Vue.use(Image);
    // Vue.use(TimeSelect);
    // Vue.use(TimePicker);
    Vue.use(Avatar);
    Vue.use(Row);
    Vue.use(Col);
    Vue.use(Container);
    Vue.use(Header);
    Vue.use(Aside);
    Vue.use(Main)
    Vue.use(Footer)
    Vue.use(Card)
    Vue.use(Divider)
    Vue.use(Tooltip)
    Vue.use(Table)
    Vue.use(TableColumn)
    Vue.use(Select)
    Vue.use(Option)
    Vue.use(OptionGroup)
    Vue.use(DatePicker)
    Vue.use(Switch)
    Vue.use(Alert)
    
    
    Vue.prototype.$msgbox = MessageBox;
    Vue.prototype.$alert = MessageBox.alert;
    Vue.prototype.$confirm = MessageBox.confirm;
    Vue.prototype.$prompt = MessageBox.prompt;
    Vue.prototype.$notify = Notification;
    Vue.prototype.$message = Message;
    

    Gzip压缩

    查看各个js 大小

    vue cli3 性能优化实战

    vue.config.js 中引入

    const CompressionWebpackPlugin = require('compression-webpack-plugin')
    
    module.exports = {
    
    //.....
        configureWebpack: config => {
            // gzip
            config.plugins.push(
                new CompressionWebpackPlugin({
                    // 正在匹配需要压缩的文件后缀
                    test: /\.(js|css|svg|woff|ttf|json|html)$/,
                    // 大于10kb的会压缩
                    threshold: 10240
                        // 其余配置查看compression-webpack-plugin
                })
            )
    
            config["performance"] = { //打包文件大小配置
                "maxEntrypointSize": 10000000,
                "maxAssetSize": 30000000
            }
        },
    }    
    

    压缩大小

    vue cli3 性能优化实战

    打包输出

    vue cli3 性能优化实战

    路由懒加载

    	{
                path: '/index',
                name: 'index',
                meta: {
                    title: '知识追寻者'
                },
            // 在路由被访问时才会引入组件
                component: (resolve) => require(['@/views/index'], resolve)
            }
    

    nginx 开启 gzip 压缩

        gzip  on;
        gzip_min_length  1k;
        gzip_buffers     4 16k;
        gzip_http_version 1.1;
        gzip_comp_level 9;
        gzip_types       text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php application/javascript application/json;
        gzip_disable "MSIE [1-6]\.";
        gzip_vary on;
    
    

    最终优化效果

    vue cli3 性能优化实战

    有兴趣的同学们可以来 我的个人站点学习!当然知识追寻者是主研后端,偶尔蹭蹭前端!! 欢迎来撩!!!! zszxz.com/index


    起源地下载网 » vue cli3 性能优化实战

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元