当前位置: 首页 > news >正文

vue技巧(十)全局配置使用(打包后可修改配置文件)

1、背景        

        vue打包目前主流用的有webpack和vite两种,默认用的webpack。(二者的区别大家可以各自上网查,我没用过vite,所以不过多介绍)vue通过webpack打包后,源码会被压缩,但一些关键配置可能需要根据运行环境的变化而手动修改。本篇文章则主要介绍如何让配置文件在打包后保持不变,进而支持后期手动修改配置文件中的参数。

2、实现方法

方法一:配置文件放置到public目录下(最简单、推荐使用)
webpack打包时会整个复制public里面的文件,因此放置在其中的配置文件不会受到任何影响。

配置使用方法:

方法二:基于generate-asset-webpack-plugin插件

首先安装插件:

npm install --save-dev generate-asset-webpack-plugin

其次在vue配置文件中声明打包时重新生成指定的配置文件,配置如下:

const GenerateAssetPlugin = require('generate-asset-webpack-plugin')
const globalConfig = require('./src/static/globalConfig.json')
module.exports={configureWebpack:{performance: {hints: false},plugins: [new GenerateAssetPlugin({filename: 'globalConfig.json',fn: (compilation, cb) => {cb(null, JSON.stringify(globalConfig))},extraFiles: []})]}
}

注意:这里其实是重新生成一个配置文件,所以使用的是json类型的配置文件。另外我用的webpack版本太高,跟插件不匹配,编译时报错:编译报错compiler.plugin is not a function。解决方式是修改插件源码,修改过程可参考该文章(新安webpack插件后编译报错compiler.plugin is not a function-CSDN博客)。打包后目录如下:

在代码中使用该配置文件的方法与使用js类型配置文件类似,如下所示:

总结:

1)方式一展示了js格式配置的使用方式,方式二展示了json格式配置的使用方式。

2)配置文件一般有.js或.json两种,方式一使用js或者json配置都可以,方式二则推荐用json,因为方式二如果使用js的话,上面的拷贝代码会报错。

3)webpack版本太高与插件不兼容,编译报错compiler.plugin is not a function,可以通过修改源码解决,解决方式参考该文章:新安webpack插件后编译报错compiler.plugin is not a function-CSDN博客

4)还有一种常见的配置使用思路,就是提前创建好多个配置文件,然后根据不同的运行环境让框架自动选择某一个配置文件使用。但这种方法使用的前提是所有环境和配置是已知的才行。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Hash算法、MD5算法、HashMap
  • SpringBoot 升级到2.4.0以上版本跨域设置
  • AForge.NET介绍
  • 如何用PlayCanvas打造一个令人惊叹的3D模型在线展示
  • 如何在隔离环境中设置 LocalAI 以实现 GPU 驱动的文本嵌入
  • 如何基于Nginx配置代理服务器实现邮件告警
  • ReentrantLock的非公平锁(NonfairSync)深度解析:源码之旅与实战策略
  • 三十五、 欧盟是如何对法律政策环境进行评估的?
  • 个股场外期权个人如何参与买卖?
  • 什么是电表无人抄表?
  • 融资融券是什么?深入解析股市杠杆交易!
  • 用PlayCanvas打造一个3D模型
  • 焦化行业排放平台简介
  • 【机器学习】Qwen2大模型原理、训练及推理部署实战
  • LVS ipvsadm命令的使用(二)
  • 【mysql】环境安装、服务启动、密码设置
  • classpath对获取配置文件的影响
  • Flex布局到底解决了什么问题
  • HTTP中的ETag在移动客户端的应用
  • Java反射-动态类加载和重新加载
  • java中具有继承关系的类及其对象初始化顺序
  • Laravel Telescope:优雅的应用调试工具
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • session共享问题解决方案
  • WebSocket使用
  • 关于extract.autodesk.io的一些说明
  • 后端_MYSQL
  • 聊聊hikari连接池的leakDetectionThreshold
  • 面试遇到的一些题
  • 你真的知道 == 和 equals 的区别吗?
  • 一起参Ember.js讨论、问答社区。
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • ​MySQL主从复制一致性检测
  • # 数论-逆元
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • ### RabbitMQ五种工作模式:
  • #14vue3生成表单并跳转到外部地址的方式
  • #include<初见C语言之指针(5)>
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • (03)光刻——半导体电路的绘制
  • (21)起落架/可伸缩相机支架
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (转)VC++中ondraw在什么时候调用的
  • (转)德国人的记事本
  • (状压dp)uva 10817 Headmaster's Headache
  • *1 计算机基础和操作系统基础及几大协议
  • .net Application的目录
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .net 生成二级域名
  • .NET成年了,然后呢?
  • .net反编译工具
  • .NET和.COM和.CN域名区别
  • .NET使用HttpClient以multipart/form-data形式post上传文件及其相关参数
  • .NET正则基础之——正则委托