当前位置: 首页>后端>正文

vue3里有大量json,导致打包过大,改用axios请求,但打包apk又获取不到json文件

  • 需要注意的是改成axios请求后,打包app有获取不到json文件
  • 要把json文件放入public,但光放在public,打包编辑后会直接在dist根目录了,和assets默认的静态文件路径不一致,所以在public目录下新加一个assets,这样打包后就会和src下的assets合并
vue3里有大量json,导致打包过大,改用axios请求,但打包apk又获取不到json文件,第1张
  • 然后又发现浏览器调试没问题,但打包后依旧找不到路径,这里一定一定一定注意,apk里要使用相对路径,让它自己关联上下文

以下是项目上的相关代码

//注意因为直接引入json会打字打包的文件过大,所以这里要使用请求的方式
const getMapJson = (key: string) => {
  let mode = import.meta.env.MODE
  const base = `dataMap/${key}.json`
  //根据环境变量,判断是开发环境还是生产环境,生成的路径不一样,app中不需要完整路径,是上下文
  let jsonPath = mode === 'development' '/assets/' + base : base

  axios
    .get(new URL(jsonPath, import.meta.url).href)
    .then((res: any) => {
      mapJson[key] = res.data
    })
    .catch(err => {
      console.log(err)
    })
}
//需要加载的json文件
const files = ['aaa','bbb']//json文件名集合,遍历请求
const mapJson = {}
for (const i in files) {
  getMapJson(files[i])
}

这样处理后,体积小一半,且apk也没问题


https://www.xamrdz.com/backend/3by1941801.html

相关文章: