vue设置前端配置文件

news/2024/7/10 1:58:29 标签: vue

项目业务中有时会出现频繁变动的变量,比如首页的宣传语、一些时间时长的控制等,时间充裕且有必要的话,可以做一个配置页面在服务器端进行存储和修改,但是在开发过程中以保证业务功能先完成的情况下,可以先将这些变量抽取出来,放在一个json文件中作为配置文件,测试/运维人员可以通过手动修改文件中的值来模拟不同的情况以便于测试。

实现方法如下:

1.在static(vue2)或者public(vue3)下新建config.json文件:

{
    "baseUrl":"http://xxxx.com",
    "baseIp":"ws://xxxx.com",
    "countdown":30,
    "notice":"这里是可随意变动的通知内容",
    "time":"2021.11.30-2021.12.02",
    "version":"0"
}

2.在入口文件index.js中,这样建立vue实例:

import Vue from 'vue'
import axios from 'axios';
import App from './index.vue'

let startApp = function () {
  axios.get('/static/urlPage.json').then(res => {
    //将配置文件中全部内容挂载到vue实例上
    Vue.prototype.$global = res.data
    console.log(Vue.prototype.$global)

    new Vue({
      el: '#app',
      router,
      store,
      components: { App },
      template: '<App/>'
    })

  })
}
startApp()

3.项目中可以通过this.$global.xxx来获取相关的值。

<div class="notice">
    <p class="animate">
       {{$global.notice}}
    </p>
</div>

补充:

该项目中共写了三套页面,一套后台管理A两套展示页面BC,因此出现了需要不同打包方式的需求,如AB、AC、ABC,因此我同样使用上面的配置做了个初步处理:

在打包配置文件build/utils.js中,

//多入口配置
// 通过glob模块读取pages文件夹下的所有对应文件夹下的js后缀文件,如果该文件存在
// 那么就作为入口处理
exports.entries = function () {
  var entryFiles = glob.sync(PAGE_PATH + '/*/*.js')
  var map = {}
  entryFiles.forEach((filePath) => {
      var filename = filePath.substring(filePath.lastIndexOf('\/') + 1, filePath.lastIndexOf('.'))
      if(urlPage.version=='0'){
        if(filename=='pageB'){
          console.log('0版本入口不打B页面')
        }
        else{
          map[filename] = filePath
        }
      }else if(urlPage.version=='1'){
        if(filename=='pageC'){
          console.log('1版本入口不打C页面')
        }
        else{
          map[filename] = filePath
        }
      }else{
        console.log('全部入口');
        map[filename] = filePath
      }
  })
  return map
}

//模板打包同样处理
exports.htmlPlugin = function () {
  let entryHtml = glob.sync(PAGE_PATH + '/*/*.html')
  let arr = []
  entryHtml.forEach((filePath) => {
      let filename = filePath.substring(filePath.lastIndexOf('\/') + 1, filePath.lastIndexOf('.'))
      if(urlPage.version=='0'){
        if(filename=='pageB'){
          console.log('0版本入口不打B页面')
        }else{
          let conf = {
            // 模板来源
            template: filePath,
            // 文件名称
            filename: filename + '.html',
            // 页面模板需要加对应的js脚本,如果不加这行则每个页面都会引入所有的js脚本
            chunks: ['manifest', 'vendor', filename],
            inject: true
          }
          if (process.env.NODE_ENV === 'production') {
              conf = merge(conf, {
                  minify: {
                      removeComments: true,
                      collapseWhitespace: true,
                      removeAttributeQuotes: true
                  },
                  chunksSortMode: 'dependency'
              })
          }
          arr.push(new HtmlWebpackPlugin(conf))
        }
      }else if(urlPage.version=='1'){
        ....
      }else{
        console.log('全部页面');
        ....
      }
  })
  return arr
}

这样就可以通过配置文件中的version来控制打包时只打包指定的页面,为0打包AC、为1打包AB、否则打包ABC,以达到分别部署的目的。


http://www.niftyadmin.cn/n/1846023.html

相关文章

OpenGL ES for Android 绘制矩形和正方形

前面的文章介绍了如何绘制三角形&#xff0c;在OpenGL ES中没有直接绘制矩形的方式&#xff0c;通过绘制2个三角形的方式绘制矩形。 绘制矩形的顶点shader&#xff1a; attribute vec4 vPosition; void main() {gl_Position vPosition; }绘制矩形的片段shader&#xff1a; …

node-sass安装失败

看尽了网上的帖子&#xff0c;就是安装不上。。最后放弃node-sass&#xff0c;改用dart-sass&#xff0c;如下&#xff1a; package.json中 代码中如果用到了/deep/语法&#xff0c;替换成::v-deep即可

OpenGL ES for Android 绘制立方体

立方体有6个面&#xff0c;8个顶点&#xff0c;因此绘制立方体其实就是绘制6个面。 顶点shader attribute vec4 a_Position; attribute vec4 a_color; varying vec4 v_color; void main() {v_color a_color;gl_Position a_Position; }a_Position为顶点数据&#xff0c;a_co…

[前端面试套餐css+js+vue]第九天

前端面试套餐css&#xff1a;说说flexbox(弹性盒布局模型)属性容器属性成员属性javascript&#xff1a;解释下什么是事件代理&#xff1f;应用场景&#xff1f;应用场景vue&#xff1a;给对象添加新属性界面不刷新&#xff1f;直接添加属性的问题原理分析解决方案css&#xff1…

OpenGL ES for Android 深度测试

什么是深度 深度就像是现实世界中物体与我们自己之间的距离&#xff0c;而在OpenGL中&#xff0c;深度是像素点&#xff08;可以理解为现实世界中的物体&#xff09;距离相机的距离&#xff0c;深度信息保存在深度缓存中&#xff0c;深度值越大则离相机越远。 深度测试有什么…

OpenGL ES for Android 绘制旋转的地球

No 图 No Code&#xff0c;我们先来欣赏下旋转的地球&#xff1a; 是不是很酷炫&#xff0c;要想绘制出上面酷炫的效果需要3个步骤&#xff1a; 计算球体顶点数据地球纹理贴图通过MVP矩阵旋转地球 计算球体顶点数据 我们知道OpenGL中最基本的图元是三角形&#xff0c;任何复…

关于阿里巴巴icon矢量图显示空白问题

关于阿里巴巴icon矢量图显示空白问题关于icon显示空白关于icon显示空白 最近在帮着做一些小项目&#xff0c;期间遇到不少问题&#xff0c;也尝试着在网上找问题的答案&#xff0c;接下来就有一个很细节的问题使得我在使用阿里巴巴的iconfont矢量图的时候出现了矢量图在页面中…

小白记录学习Dajngo的第二天

小白学习Django的第二天 用博客记录 python学习 沙雕错误 今天学到了给url命名与url反转的时候 新建了两个app&#xff0c;在两个新建的app下的urls.py文件中导入path模块后的一系列操作后运行项目&#xff0c;结果Pycharm毫不留情的弹出了错误 我再到urls.py中看时发现了这…