热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

webpack4配置Vue多页面入口轻量级模板

前言之前写过一次关于webpack配置多页面应用,写的不是很好,这次项目要用到多页面应用,于是重新基于webpack4构建了一套关于vue的多页面应用。我在网上搜索了一圈,发现vu
前言

之前写过一次关于webpack配置多页面应用,写的不是很好,这次项目要用到多页面应用,于是重新基于webpack4构建了一套关于vue的多页面应用。我在网上搜索了一圈,发现vue多页面配置,大部分都是基于vue-cli配置的,很少是从基础开始配置,如是我通过webpack4,构建了一个提供多页面入口,打包,调试的
轻量级的构建工具,
不依赖过多配置,只加载常用的配置,用更少的代码,做更多的东西

项目结构

├── build // webpack配置目录
│   ├── webpack.config.base.js // 公共配置
│   ├── webpak.config.dev.js // 开发模式
│   ├── webpak.config.prod.js // 打包模式
├── dist // 项目打包路径(自动生成)
├── page // 多页面入口(自定义)
├── public // index.html模板
├── src // 源码目录(自定义)
├── postcss.config // 样式添加前缀
├── pages.js // 多页面配置项
项目运行

克隆项目
git clone git@github.com:hangjob/vue-multiple-webpack4-template.git

安装依赖
npm install 或 yarn

开发模式
npm run dev
里面已经写好了两个入口文件,启动后可直接访问
http://localhost:3000/home.html
http://localhost:3000/login.html

打包模式
npm run build
打包后生成文件dist目录

《webpack4配置Vue多页面入口轻量级模板》

文件解释

关于build中使用的插件项在文件配置后面注释写的都很清楚

  • 多页面配置项(pages.js)

    pages: [
    {
    page: 'home',
    entry: path.resolve(__dirname, './page/home.js'), //指向入口文件
    title: '这是页面1',
    template: path.resolve(__dirname, './public/index.html'), //指向模板文件
    filename: 'home.html',
    chunks: ['home','common'], // 引入公共模块common
    },
    {
    page: 'login',
    entry: path.resolve(__dirname, './page/login.js'), //指向入口文件
    title: '这是页面2',
    template: path.resolve(__dirname, './public/index.html'), //指向模板文件
    filename: 'login.html',
    chunks: ['login'],
    }
    ]

  • webpack.config.dev.js 开发模式

    mode: 'development',
    devtool: 'cheap-module-eval-source-map',// 原始代码(只有行内),但是更高的质量和更低的性能
    watch: true,
    watchOptions: {
    poll: 1000, //每秒监控讯问次数
    aggregateTimeout: 500, //防抖
    ignored: '/node_modules/' //忽略监控文件
    },
    devServer:{
    port: 3000,
    hot: true,
    progress: false, //记录条
    contentBase: path.resolve(__dirname, '../public'), //表示的是告诉服务器从哪里提供内容
    compress: true //开启gzip压缩
    }

  • webpack.config.prod.js 生产模式

    ode: 'production',
    devtool: 'cheap-module-source-map',// 原始代码(只有行内)每行代码从loader中进行映射
    plugins: [
    new CleanWebpackPlugin(['dist'], {
    root: path.resolve(__dirname, '..'),
    dry: false // 启用删除文件
    })
    ],
    optimization: {
    minimizer: [
    new UglifyJsPlugin({
    cache: true,
    parallel: true, //启用缓存并且启用多进程并行运行
    sourceMap: true //错误消息位置映射(减慢编译速度),线上错误方便查看
    }),
    new OptimizeCSSAssetsPlugin({})
    ]
    }

  • webpack.config.base.js 公共模块

    optimization: {
    splitChunks: {
    cacheGroups: {
    // 将 `node_modules`目录下被打包的代码到`common/common.js`
    common: {
    test: /node_modules/,
    chunks: "initial", //只对入口文件处理
    name: "common", //配置公共模块名称
    minChunks: 2, //表示被引用次数,默认为1,比如在项目中有2处引用到一样的模块就会抽离到公共模块下
    maxInitialRequests: 5, // 最大的初始化加载次数,默认为1
    minSize: 0 //表示在压缩前的最小模块大小,默认为0
    }
    }
    }
    }

   网络下载太慢,请使用淘宝镜像

  • 1.临时使用

    npm --registry https://registry.npm.taobao.org install express

  • 2.持久使用

    npm config set registry https://registry.npm.taobao.org

    配置后可通过下面方式来验证是否成功

    npm config get registry 或者 npm info express

  • 3.通过cnpm使用

    npm install -g cnpm --registry=https://registry.npm.taobao.org

说明

github地址,后面会持续更新,如果对您有帮助,您可以点右上角 “Star” 支持一下 谢谢! ^_^

如要在编译过程中遇到错误,点击
联系作者

感谢这些文章提供帮助

项目有使用到这些文章的我都注释过
webpack中的path、publicPath和contentBase
mini-css-extract-plugin
webpack4 splitChunksPlugin && runtimeChunkPlugin 配置杂记
Vue Loader


推荐阅读
  • 网络请求模块选择——axios框架的基本使用和封装
    本文介绍了选择网络请求模块axios的原因,以及axios框架的基本使用和封装方法。包括发送并发请求的演示,全局配置的设置,创建axios实例的方法,拦截器的使用,以及如何封装和请求响应劫持等内容。 ... [详细]
  • 微信民众号商城/小顺序商城开源项目介绍及使用教程
    本文介绍了一个基于WeiPHP5.0开发的微信民众号商城/小顺序商城的开源项目,包括前端和后端的目录结构,以及所使用的技术栈。同时提供了项目的运行和打包方法,并分享了一些调试和开发经验。最后还附上了在线预览和GitHub商城源码的链接,以及加入前端交流QQ群的方式。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • uniapp开发H5解决跨域问题的两种代理方法
    本文介绍了uniapp开发H5解决跨域问题的两种代理方法,分别是在manifest.json文件和vue.config.js文件中设置代理。通过设置代理根域名和配置路径别名,可以实现H5页面的跨域访问。同时还介绍了如何开启内网穿透,让外网的人可以访问到本地调试的H5页面。 ... [详细]
  • 单页面应用 VS 多页面应用的区别和适用场景
    本文主要介绍了单页面应用(SPA)和多页面应用(MPA)的区别和适用场景。单页面应用只有一个主页面,所有内容都包含在主页面中,页面切换快但需要做相关的调优;多页面应用有多个独立的页面,每个页面都要加载相关资源,页面切换慢但适用于对SEO要求较高的应用。文章还提到了两者在资源加载、过渡动画、路由模式和数据传递方面的差异。 ... [详细]
  • loader资源模块加载器webpack资源模块加载webpack内部(内部loader)默认只会处理javascript文件,也就是说它会把打包过程中所有遇到的 ... [详细]
  • npmrunbuild后dist文件夹下面直接浏览器打开index.html,css和js的路径都不正确。放到跟目录下就正常了,iis上同样只能在根目录下。我项目的目录如下: ... [详细]
  • 【前端工具】nodejs+npm+vue 安装(windows)
    预备先看看这几个是干嘛的,相互的关系是啥。nodejs是语言,类比到php。npm是个包管理,类比到composer。vue是个框架&# ... [详细]
  • Vue基础一、什么是Vue1.1概念Vue(读音vjuː,类似于view)是一套用于构建用户界面的渐进式JavaScript框架,与其它大型框架不 ... [详细]
  • 必须先赞下国人npm库作品:node-images(https:github.comzhangyuanweinode-images),封装了跨平台的C++逻辑,形成nodejsAP ... [详细]
  • RN即ReactNative基于React框架针对移动端的跨平台框架,在学习RN前建议最好熟悉下html,css,js,当然如果比较急,那就直接上手吧,毕竟用学习前面基础的时间,R ... [详细]
  • 1.移除consol.log()的babel插件安装:npmibabel-plugin-transform-remove-console-D配置:babel.config.js:这 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • 程序员如何选择机械键盘轴体?红轴和茶轴对比
    本文介绍了程序员如何选择机械键盘轴体,特别是红轴和茶轴的对比。同时还介绍了U盘安装Linux镜像的步骤,以及在Linux系统中安装软件的命令行操作。此外,还介绍了nodejs和npm的安装方法,以及在VSCode中安装和配置常用插件的方法。最后,还介绍了如何在GitHub上配置SSH密钥和git的基本配置。 ... [详细]
  • React 小白初入门
    推荐学习:React官方文档:https:react.docschina.orgReact菜鸟教程:https:www.runoob.c ... [详细]
author-avatar
mobiledu2502929297
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有