项目开发完成,接下来是上线,关于vue
项目的部署,我司前端是部署在nginx
服务器上,关于nginx
的相关文档,请自行查阅;本文只记录部署时碰到的一些问题。css
vue
项目打包后,是生成一系列的静态文件,包括项目的请求IP
都打入包内,若是后台服务改动,这时你的前端文件,又要从新编译打包,这里采用的是后台管理项目总结提到的前端自行请求一个配置文件,动态修改你的相关配置。html
// config.json { "api": "test.com" }
在项目store
中请求你的配置文件,写入state
中,在调用的时候能够全局访问到你的配置前端
// api.js GetConfigApi() { return new Promise((resolve, reject) => { axios .get(`/config.json?v=${new Date().getTime()}`) .then(result => { const configApi = { API: result.data['api'], // 统一接口 }; resolve(configApi); }) .catch(error => { reject(error); }); }); }
由于vue-router
有hash
和history
不一样的两种模式,使用不一样的模式,nginx
的配置不一样,hash
模式下,不须要改动,只须要部署你的前端文件就能够了,因此这里只讨论history
模式下.conf
文件的修改vue
访问修改nginx
配置文件nginx.conf
webpack
server { listen 80; server_name test.com; location / { root /front; // 前端文件路径 index index.html; // hash模式只配置访问html就能够了 try_files $uri $uri/ /index.html; // history模式下 } }
修改完成,重启服务访问test.com
ios
当咱们须要把项目部署到子级目录下时,则须要修改项目的BASE_URL
,生成一个子级目录下的绝对访问路径。修改对应的.conf
配置文件nginx
server { listen 80; server_name test.com; location /demo { // 子级目录 alias /front/demo; index index.html; try_files $uri $uri/ /demo/index.html; } }
修改完成,重启服务访问test.com/demo
web
前端项目的静态文件经常会被浏览器缓存,而项目编译后,js
,css
,图片等其实是已经有hash
值来去除了缓存,可是项目更新后,仍然会出现缓存问题,这是因为咱们的项目整个入口都是在index.html
文件上,浏览器实际是缓存了咱们的html
页面,因此咱们要在nginx
中告诉浏览器,html
文件不被缓存。vue-router
location /demo { add_header Cache-Control 'private, no-store, max-age=0'; ... }
这里只讨论了nginx
相关的部署,实际上vue-router
文档上是有相关的配置例子的。json
其余总结文章: