vue打包后的静态文件上传到CDN,如何设置静态文件域名?

在搞资源文件全球加速时需要将 JS,CSS,IMG 等静态资源放到 cdn 服务器上,WEB 网站上引用CDN 上缓存的资源,因为网站用vue-cli 搭建的,所以需要对 vue-cli 配置文件 (vue-config-js) 进行修改,修改打包后的index.html中静态资源引用路径。

vue.config.js

module.exports = { publicPath: process.env.NODE_ENV === "production" ? "https://resource.xxx.com/" : "/", } 

部署应用包时的基本 URL,默认值'/'。默认情况下,Vue CLI 会假设你的应用是被部署在一个域名的根路径上。如 https://my-app.com/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://my-app.com/my-app/,则设置 publicPath 为 /my-app/

  • 用法和 webpack 本身的 output.publicPath 一致,但是 Vue CLI 在一些其他地方也需要用到这个值,所以请使用 publicPath 而不要直接修改 webpack 的 output.publicPath。
  • 这个值也可以被设置为空字符串 '' 或是相对路径 './',这样所有的资源都会被链接为相对路径。
  • 该值也是打包后生成的 index.html 静态资源文件引用的路径。通常打包后静态资源找不到时修改 publicPath 即可。
  • 如上代码打包后生成的 index.html 中 js 的 src 为:https://resource.xxx.com/app.js

这时静态资源 CDN 已经结束,但是使用vue-cli 3.x的用户打包完运行发现自己的路由炸了,所有的路由都变成http:domain.com/https://resource.xxx.com/#/xx,都多加了https://resource.xxx.com/,不要慌,既然是路由的问题,咱就看一下 路由配置文件

router.js

const router = new VueRouter({ base: process.env.BASE_URL, routes }) 

应用的基路径,默认值 '/'
例如,如果整个单页应用服务在 /app/ 下,base 就应该设为 "/app/"

  • vue-cli 3.x 默认配置base 为 process.env.BASE_URL,即为 baseUrl

  • baseUrl 从 Vue CLI 3.3 起已弃用,替换为 publicPath

  • BASE_URL 和 vue.config.js 中的 publicPath 选项相符,即你的应用会部署到的基础路径

因为我们刚刚在 vue.config.js 中设置了 publicPath 为 https://resource.xxx.com/,所以路由变成了这副鬼样子。

既然找到原因,那就根据自己想要的路径修改路由的 base 即可。

如果不需要特别处理路径,去掉 base 或将 base 改为'/' 就可以搞定了!!!

原文链接:https://blog.csdn.net/weixin_29491885/article/details/119253898?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165934461816782390562794%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=165934461816782390562794&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~times_rank-23-119253898-null-null.article_score_rank_blog&utm_term=%E6%90%AD%E5%BB%BAcdn

原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/7050

(0)
上一篇 2022年8月16日
下一篇 2022年8月16日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

优速盾注册领取大礼包www.cdnb.net
/sitemap.xml