專欄目標
在vue和element UI聯合技術棧的操控下,本專欄提供行之有效的源代碼示例和信息點介紹,做到靈活運用。
(1)提供vue2的一些基本操作:安裝、引用,模板使用,computed,watch,生命周期(beforeCreate,created,beforeMount,mounted, beforeUpdate,updated, beforeDestroy,destroyed,activated,deactivated,errorCaptured,components,)、 $root , $parent , $children , $slots , $refs , props, $emit , eventbus ,provide / inject, Vue.observable, $listeners, $attrs, $nextTick , v-for, v-if, v-else,v-else-if,v-on,v-pre,v-cloak,v-once,v-model, v-html, v-text, keep-alive,slot-scope, filters, v-bind,.stop, .native, directives,mixin,render,國際化,Vue Router等
(2)提供element UI的經典操作:安裝,引用,國際化,el-row,el-col,el-button,el-link,el-radio,el-checkbox ,el-input,el-select, el-cascader, el-input-number, el-switch,el-slider, el-time-picker, el-date-picker, el-upload, el-rate, el-color-picker, el-transfer, el-form, el-table, el-tree, el-pagination,el-badge,el-avatar,el-skeleton, el-empty, el-descriptions, el-result, el-statistic, el-alert, v-loading, $message, $alert, $prompt, $confirm , $notify, el-breadcrumb, el-page-header,el-tabs ,el-dropdown,el-steps,el-dialog, el-tooltip, el-popover, el-popconfirm, el-card, el-carousel, el-collapse, el-timeline, el-divider, el-calendar, el-image, el-backtop,v-infinite-scroll, el-drawer等
本文章目錄
- 專欄目標
- 應用場景
- 安裝插件
- vue.config.js 配置
- webpack-bundle-analyzer 是什么?
- 相關API
應用場景
vue項目中,不做處理,通常首頁文件比較大,影像加載速度。解決辦法是通過webpack將大文件分解為小文件,具體的一個vue.config.js文件參考。
安裝插件
npm install --save-dev webpack-bundle-analyze
vue.config.js 配置
onst BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin; module.exports = { publicPath: './', assetsDir: 'static', productionSourceMap: false, devServer: { proxy: { '/api':{ target:'http://xxx.xxx.xxx.xxx:1234', changeOrigin:true, pathRewrite:{ '^/api':'/api' } } } }, chainWebpack: config => { if (process.env.NODE_ENV == 'production') { // 移除 prefetch 插件 config.plugins.delete('prefetch'); } }, configureWebpack: (config) => { const res = { plugins: [] }; if (process.env.NODE_ENV == 'production') { res.plugins.push(new BundleAnalyzerPlugin()), res.optimization = { splitChunks: { // chunks: 'async', // minSize: 300000, maxSize: 650000, // maxAsyncRequests: 5, // maxInitialRequests: 3, cacheGroups: { vendors: { name: `chunk-vendors`, test: /[\\/]node_modules[\\/]/, chunks: 'initial', priority: 2, reuseExistingChunk: true, enforce: true }, common: { name: `chunk-common`, chunks: 'initial', minChunks: 2, maxInitialRequests: 5, minSize: 0, priority: 1, reuseExistingChunk: true, enforce: true }, elementui: { test:/[\\/]node_modules[\\/]element-ui[\\/]/, //匹配要拆分的模塊 name: 'chunk-elementui', chunks: 'all', priority: 3, reuseExistingChunk: true, enforce: true }, echarts: { test: /[\\/]node_modules[\\/](vue-)?echarts[\\/]/, name: 'chunk-echarts', chunks: 'all', priority: 4, reuseExistingChunk: true, enforce: true }, xlsx: { test: /[\\/]node_modules[\\/]xlsx[\\/]/, name: 'chunk-xlsx', chunks: 'all', priority: 3, reuseExistingChunk: true, enforce: true } } } } } return { ...res } }, // css相關配置 css: { extract: true, // 是否使用css分離插件 ExtractTextPlugin sourceMap: false, // 開啟 CSS source maps? loaderOptions: { css: { }, // 這里的選項會傳遞給 css-loader }, // css預設器配置項 詳見https://cli.vuejs.org/zh/config/#css-loaderoptions modules: false // 啟用 CSS modules for all css / pre-processor files. }, }
webpack-bundle-analyzer 是什么?
webpack-bundle-analyzer 是 webpack 的插件,需要配合 webpack 和 webpack-cli 一起使用。這個插件可以讀取輸出文件夾(通常是 dist)中的 stats.json 文件,把該文件可視化展現,生成代碼分析報告,可以直觀地分析打包出的文件有哪些,及它們的大小、占比情況、各文件 Gzipped 后的大小、模塊包含關系、依賴項等,對應做出優化,從而幫助提升代碼質量和網站性能。
相關API
https://www.npmjs.com/package/webpack-bundle-analyzer