# vue_shop **Repository Path**: nfxyj/vue_shop ## Basic Information - **Project Name**: vue_shop - **Description**: vue电商项目 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-12-30 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # vue_shop项目总结 ## 项目编写 1. 了解业务和需求 2. 功能划分 3. 项目开发模式以及技术选型 4. 项目初始化 5. 数据准备,接口配置 6. 项目分模块编写 ## 项目优化 1. 通过nprogress添加进度条效果 安装`NProgress`插件,并在`request`拦截器中开启进度条,在`response`拦截器中结束进度条 2. 解决serve命令中提示的ESLint语法错误 根据`ESLint`报警信息修改项目 3. 在执行build命令期间移除所有的console 1. 安装`babel-plugin-transform-remove-console`插件并使用该插件移除console信息 2. 在`.babel.config.js`文件中进行相应发布阶段移除console的配置 ```js // 这是项目发布阶段需要用到的 babel 插件 const prodPlugins = [] if (process.env.NODE_ENV === 'production') { prodPlugins.push('transform-remove-console') } module.exports = { presets: ['@vue/cli-plugin-babel/preset'], plugins: [ ...prodPlugins ] } ``` 4. 生成打包报告 1. 通过命令行参数的形式生成报告 ```js // 通过 vue-cli 的命令选项可以生成打包报告 // --report 选项可以生成 report.html 以帮助分析包内容 vue-cli-service build --report ``` 2. 通过可视化的UI面板直接查看报告(推荐) 在可视化的UI面板中,通过控制台和分析面板,可以方便地看到项目中所存在的问题。 5. 通过`vue.config.js`修改webpack的默认配置 **为开发模式与发布模式指定不同的打包入口** 默认情况下,Vue项目的开发模式与发布模式,共用同一个打包的入口文件(即 `src/main.js`)。 为了将项目 的开发过程与发布过程分离,我们可以为两种模式,各自指定打包的入口文件,即: - 开发模式的入口文件为 `src/main-dev.js ` - 发布模式的入口文件为 `src/main-prod.js` ```js module.exports = { chainWebpack:config=>{ config.when(process.env.NODE_ENV === 'production',config=>{ config.entry('app').clear().add('./src/main-prod.js') }) config.when(process.env.NODE_ENV === 'development',config=>{ config.entry('app').clear().add('./src/main-dev.js') }) } } ``` 6. 通过externals加载外部CDN资源 默认情况下,通过 import 语法导入的第三方依赖包,最终会被打包合并到同一个文件中,从而导致打包成功 后,单文件体积过大的问题。 为了解决上述问题,可以通过 webpack 的 externals 节点,来配置并加载外部的 CDN 资源。凡是声明在 externals 中的第三方依赖包,都不会被打包。 1. 在`vue.config.js`文件`chainWebpack`中添加如下配置 ```js config.set('externals', { vue: 'Vue', 'vue-router': 'VueRouter', axios: 'axios', lodash: '_', echarts: 'echarts', nprogress: 'NProgress', 'vue-quill-editor': 'VueQuillEditor' }) ``` 2. 在`public/index.html`文件的头部区域加载外部CDN资源 ```html ``` 7. 通过CDN优化ElementUI的打包 虽然在开发阶段,我们启用了 `element-ui` 组件的按需加载,尽可能的减少了打包的体积,但是那些被按需加 载的组件,还是占用了较大的文件体积。此时,我们可以将 `element-ui` 中的组件,也通过 CDN 的形式来加 载,这样能够进一步减小打包后的文件体积 1. 在 `main-prod.js` 中,注释掉` element-ui `按需加载的代码 2. 在 `index.html` 的头部区域中,通过 CDN 加载 `element-ui` 的 `js `和` css `样式 ```html ``` 8. 自定制首页内容 不同的打包环境下,首页内容可能会有所不同。我们可以通过插件的方式进行定制,插件配置如下: ```js chainWebpack: config => { config.when(process.env.NODE_ENV === 'production', config => { config.plugin('html').tap(args => { args[0].isProd = true return args }) }) config.when(process.env.NODE_ENV === 'development', config => { config.plugin('html').tap(args => { args[0].isProd = false return args }) }) } ``` 2. 在 `public/index.html` 首页中,可以根据 `isProd` 的值,来决定如何渲染页面结构: ```html