Vue-cli 多页相关配置记录

搭建一个顺手的MPA项目脚手架,其实根据项目的不同目录结构和打包配置都可以进行灵活的调整。这次的项目可能是包含各种客户端和管理后台在一起的综合项目所以需要将样式和脚本做比较好的隔离。权限验证可以使用统一的模块,然后每个单独SPA中根据需求再单独实现数据或者功能权限的控制。

目录结构

因为项目间的差异可能会比较大,所以除了基础的依赖以及一些通用的Service.其他模块之间需要做好隔离。每个Module 就是单独的一个SPA,可以拥有自己的一套 Styles,Route,Store,Components

总体拥有一些公用的脚本、Scss函数、静态文件等。

打包配置

为了达到尽可能的隔离,所以公共chunk只包含最基本的公共库,比如Vue。但是 Vue-cli提供的默认打包配置,是比较适用于单页应用的。

splitChunk

用于提取公共模块,默认配置会将所有页面引入的打包到chunk-vendors.js。然后将其他第三方公共库都统一打包到chunk-common.js中去,这就导致了可能我这个页面完全没有用某个第三方库(比如:element-ui),但是还是要载入相关资源。造成加载的极大浪费。

这里利用配置的minChunks字段提取公共模块,其他的都单独载入。

  config.optimization.splitChunks({
cacheGroups: {
vendors: {
name: "chunk-vendors",
minChunks: 2,
test: /node_modules/,
priority: -10,
chunks: "initial"
},
common: {}
}
});

css.extract

这里是否将样式提取到统一的Css文件。和之前一样的问题每个页面都需要单独的Css。

  cssExtract = {
filename: "style/[name].[hash:8].css",
chunkFilename: "style/[name].[hash:8].css"
};

如果有公共的第三方css,需要单独配置。

hard-source-webpack-plugin

这个是为了提高打包效率的插件,通过缓存dll使得二次加载速度提高了很多。

const HardSourceWebpackPlugin = require("hard-source-webpack-plugin")
configureWebpack: {
// 缓存dll,优化编译速度
plugins: [new HardSourceWebpackPlugin()]
},

Vue-cli 多页相关配置记录的更多相关文章

  1. VUE cli 4.x下配置多页面以及同时配置支持element-ui及mint-ui并且优化首页文件大小。

    场景,公司的一个小型项目,需同时支持移动端和PC端.最开始考虑做两个独立的项目.但后来考虑到总共只有4个功能页面,布署起来相对麻烦.所以决定做在一个项目里. 1.升级vue-cli到4.x npm i ...

  2. @vue/cli 4.0.5 学习记录

    1. Vue CLI (@vue/cli) 是一个全局安装的 npm 包,提供了终端里的 vue 命令.Vue CLI 插件的名字以 @vue/cli-plugin- (内建插件) 或 vue-cli ...

  3. 个人网站搭建时linux中的相关配置记录(mysql,jdk,nginx,redis)

    一.开发计划(包括准备工作,网站大致需求等) 二.服务器(linux/centos)购买.相应环境配置(jdk),软件安装(mysql, nginx, redis).域名解析 三.原型图.代码开发(v ...

  4. @vue/cli 3.x 版本配置productionGzip提高性能

    第一步:安装插件 npm i -D compression-webpack-plugin 第二步:引入.在文件vue.config.js里导入compression-webpack-plugin,并添 ...

  5. nginx的相关配置记录和总结

    前言 本文旨在对nginx的各项配置文件和参数做一个记录和总结. 原因是在配置框架和虚拟目录,web语言解析的nginx环境的时候遇到各种问题和参数,有时百度可以解决,有时直接复制粘贴,大都当时有些记 ...

  6. [Vue CLI 3] Uglify 相关的应用和设计

    在本文开始之前,先留一个问题? 如果在新版本我想加一个 drop_console 的配置呢? 在老版本的脚手架生成的配置中,对于线上环境的文件:webpack.prod.conf.js 使用了插件:u ...

  7. node.js和vue cli脚手架下载安装配置方法

    一.node.js安装以及环境配置 1.下载vue.js 下载地址: https://nodejs.org/en/ 2.安装node.js 下载完成后,双击安装包开始安装.安装地址最好换成自己指定的地 ...

  8. Swagger相关配置记录

    1.SwaggerConfig文件配置 public class SwaggerConfig { protected static string GetXmlCommentsPath() { retu ...

  9. 使用vscode开发vue cli 3项目,配置eslint以及prettier

    初始化项目时选择eslint-config-standard作为代码检测规范,vscode安装ESLint和Prettier - Code formatter两个插件,并进行如下配置 { " ...

随机推荐

  1. 给阿里云主机添加swap分区,解决问题:c++: internal compiler error: Killed (program cc1plus)

    前言 今天安装spdlog,一个快速得C++日志库,按照文档步骤,不料出现了一堆错误,像c++: internal compiler error: Killed (program cc1plus)等一 ...

  2. 顶级Kagglers的心得和技巧

    这是一篇笔记,课程来自Coursera上的How to Win a Data Science Competition: Learn from Top Kagglers 本篇可以算是顶级Kaggler大 ...

  3. Nessus安装出现localhost:8834无法访问

    1.下载Nessus https://www.tenable.com/downloads/nessus#download 2.安装方法 详细安装方法参考下文 https://www.ld80.cn/a ...

  4. JS高级---函数声明和函数表达式的区别

    函数声明和函数表达式的区别 多用函数表达式 var ff=function(){}; //函数声明 // // if(true){ // function f1() { // console.log( ...

  5. input输入框在ios手机上获取焦点后有一个灰色阴影

    遇到的场景: 有一个输入框 设置 outline:none 然后我又想给他设置获取焦点的颜色 然后 我给input 设置 border 为 1px t透明的 然后 获取焦点的时候 重新设置border ...

  6. vue引用fastClick后,ios输入框聚焦不灵敏问题

    fastClick.prototype.focus = function (targetElement) {       targetElement.focus() }

  7. S3C2440之存储控制器学习记录

    /==========翻译S3C2440存储控制器部分================/ 5 存储控制器 概述 S3C2440内存控制器为外部存储访问提供内存控制信号. S3C2440A有如下特征: ...

  8. STM32F103之定时器学习记录

    /==============翻译STM32F103开发手册定时器部分========================/ 14 高级控制计时器(TIM1和TIM8) 14.1 TIM1和TIM8介绍 ...

  9. win 下 docker 环境配置

    声明 此文只针对 win7.win10 家庭版等用户操作系统,因为这些系统无法使用 windows 的 Hyper-V 虚拟技术.只能借助于 Virtual Box 虚拟机来使用 docker. Do ...

  10. 快捷键(一):Win10

    Ctrl + X 剪切选定项 Ctrl + C(或 Ctrl + Insert) 复制选定项 Ctrl + V(或 Shift + Insert) 粘贴选定项 Ctrl + Z 撤消操作 Alt + ...