跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 在 vue 的原型上注入配置文件,配置文件通过异步 http 访问获取,如何控制初始化顺序?
未分類
19 1 月 2021

在 vue 的原型上注入配置文件,配置文件通过异步 http 访问获取,如何控制初始化顺序?

在 vue 的原型上注入配置文件,配置文件通过异步 http 访问获取,如何控制初始化顺序?

資深大佬 : darknoll 8

使用的脚手架是 vue-cli4, 现在需求是这样的,要实现前端的可配置化,比如 axios 访问的 http 地址可配置,这样就在 public 文件夹中增加一个 config 的文件夹,里面专门放一些 json 配置文件。 因为要在 js 文件中访问这些全局配置,所以我打算把这些配置挂载到 vue 的原型,然后在 main.js 中这样做 !(async () => { await axios.get(‘configs.json’).then(response => { Vue.prototype.$config = response.data }) })()

new Vue({ router, store, render: h => h(App) }).$mount(‘#app’)

那么我现在有个问题,如果配置文件体积过大,导致在其他 js 使用配置项的时候还没有返回,应该怎么处理这种情况?也就是说,我最好把获取 configs.json 同步化,不需要异步获取配置文件,但是访问 public 中的东西又没办法直接 import,有没有啥好的方案处理这种情景?

大佬有話說 (13)

  • 資深大佬 : YuxiangLuo

    你把 new Vue 也放到 axios 请求的 callback 里不就好了

    还有你这个
    !(async () => { await axios.get(‘configs.json’).then(response => { Vue.prototype.$config = response.data }) })()
    写得好奇怪,感叹号是什么意思,用了 async/await 为什么还要用 then
    换成 axios.get(‘configs.json’).then(response => { Vue.prototype.$config = response.data })都没有区别

  • 資深大佬 : azcvcza

    那就再接一个 then,把 new Vue 那行放到里边去喽

  • 主 資深大佬 : darknoll

    @YuxiangLuo 匆忙之间写错了,应该把 await 去掉,前面感叹号是防止 eslint 报错

  • 資深大佬 : coderfuns

    你这思路有问题,配置化的文件可以借助 babel,webpack 在构建的时候就注入,为什么要在代码执行的过程中注入呢。

  • 資深大佬 : wunonglin

    ???你是想做成配置中心那样还是环境变量那样?

  • 資深大佬 : no1xsyzy

    构建时注入一个基本的,前端只请求确认差量。
    如果仍然担心差量巨大,我觉得你们应该给前端发布新版本

  • 資深大佬 : no1xsyzy

    另外,你可以通过 code splitting point 将这个 config.json 打包成单独的 dist/conf.js ,作为静态依赖
    有更新可以直接改 conf.js 的内容,甚至由后端根据模板构造 conf.js 的内容。

  • 主 資深大佬 : darknoll

    @coderfuns 你打包好了之后就一成不变了啊,如果我已经部署好的前端,我想改变后端接口地址了,我可以开始就把它写到 public 的 json 文件里面( public 里面的内容 webpack 是不会改的),然后要改的时候发个请求让后端修改这个配置文件。

  • 主 資深大佬 : darknoll

    @no1xsyzy 这个怎么弄,还没研究过,有具体的教程吗?

  • 資深大佬 : coderfuns

    @darknoll 那这个就是配置中心的概念了。如果你用本地文件,直接加载静态文件就可以了啊,试试 systemjs 加载 json,类似 jsonp 方式放置到顶层 window 上。

  • 資深大佬 : tomcats

    按照你的需求,你这个配置文件必须得先加载,那么直接丢 script 标签加载好了,弄成全局变量

  • 資深大佬 : linbingcheng

    promise await async 异步变同步?

  • 資深大佬 : yaphets666

    寸数据库不就行了?
    再说了,前端是不可配置的.跟构建相关的东西都在打包阶段打进去了.不重新打包改不了.

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具