在nginx上部署vue项目(history模式)--demo实列;
转载地址:https://www.cnblogs.com/573734817pc/p/11057677.html
在很早之前,我写了一篇 关于 在nginx上部署vue项目(history模式) 但是讲的都是理论,所以今天做个demo来实战下。有必要让大家更好的理解,我发现搜索这类似的问题还是挺多的,因此在写一篇有关这方面的实战文章。
在讲解之前,我们还是和以前一样,一步步来,先看下我们项目的整个架构。
|------- 项目的根目录
| |--- app
| | |--- index
| | | |--- components
| | | | |--- home.vue
| | | | |--- index.vue
| | | | |--- java.vue
| | | | |--- node.vue
| | | | |--- xxx.vue
| | | |--- app.js
| | | |--- router.js
| |--- views
| |--- package.json
| |--- webpack.config.js
整个项目架构基本上如上一个简单的结构。下面我们来分别贴下代码吧:
app/index/components/index.vue 代码如下:
<style lang="stylus"></style><template><div id="app"><header><router-link to="/home">Home</router-link><router-link to="/java">java</router-link><router-link to="/node">node</router-link><router-link to='/xxx'>XXX</router-link></header><!-- 对应组件的内容渲染到router-view中 --><router-view></router-view></div>
</template><script type="text/javascript">export default {data() {return {}}}
</script>
app/index/components/home.vue 代码如下:
<style lang='stylus'>.home-containerwidth 100%
</style><template><div class="home-container"><h1>欢迎来到home页面</h1><router-view></router-view></div>
</template>
<script type="text/javascript">export default {data() {return {msg: ''}},methods: {}}
</script>
app/index/components/java.vue 代码如下:
<style lang='stylus'>.java-containerwidth 100%
</style><template><div class="java-container"><h1>欢迎来到java类书籍</h1><p>{{msg}}</p></div>
</template><script type="text/javascript">export default {data() {return {msg: '我是java组件'}},methods: {}}
</script>
app/index/components/node.vue 代码如下:
<style lang='stylus'>.node-containerwidth 100%
</style><template><div class="node-container"><h1>欢迎来到node类书籍</h1><p>{{msg}}</p></div>
</template><script type="text/javascript">export default {data() {return {msg: '我是node组件'}},methods: {}}
</script>
app/index/components/xxx.vue 代码如下:
<style lang='stylus'>.xxx-containerwidth 100%
</style><template><div class="xxx-container"><h1>欢迎来到xxx</h1><p>{{msg}}</p></div>
</template><script type="text/javascript">export default {data() {return {msg: '我是XXX组件'}},created() {console.log(this.$route.params.id)}}
</script>
app/index/app.js 代码如下:
import Vue from 'vue';import Index from './components/index';// 引入路由
import router from './router';new Vue({el: '#app',router: router,render: h => h(Index)
});app/index/router.js 代码如下:import Vue from 'vue';
import VueRouter from 'vue-router';// 告诉 vue 使用 vueRouter
Vue.use(VueRouter);const routes = [{path: '/home',name: 'home',component: resolve => require(['./components/home'], resolve)},{path: '/java',name: 'java',component: resolve => require(['./components/java'], resolve)},{path: '/node',name: 'node',component: resolve => require(['./components/node'], resolve)},{path: '/xxx',name: 'xxx',component: resolve => require(['./components/xxx'], resolve)},{path: '*', // 其他没有的页面都重定向到 home页面去redirect: '/home'}
]var router = new VueRouter({base: '', // 配置单页应用的基路径routes: routes,mode: 'history'
});export default router;
如上就是所有的代码。然后就是webpack.config.js 代码了。
webpack.config.js 代码我就不贴代码了,到时候大家可以看下github源码即可:
package.json 代码如下:
"scripts": {"dev": "webpack-dev-server --progress --colors --devtool cheap-module-eval-source-map --hot --inline","build": "webpack --progress --colors --devtool cheap-module-source-map"
},
现在一切准备就绪完成后,我们运行 命令 npm run dev 后就可以启动我们的服务了,然后当我们访问:
http://0.0.0.0:8083/java
就可以看到如下信息了:
但是当我们刷新下 就变成如下了:
具体什么原因,请看我之前的这篇文章解释. 我这边就不再描述了。因此现在我们需要在nginx上配置下即可。
实现步骤. 我们首先 运行 npm run build 打包正式环境,然后在我们的项目根目录下会生成 dist 文件夹,然后再把我们生成的dist 文件夹的所有页面扔到nginx服务器下的html文件夹下。然后我们就需要在nginx上配置即可。
首先执行 npm run build 打包,打包完成后,我们可以看到项目的根目录下有dist目录,如下所示:
然后我们查看下 dist/index.html 页面,会把css和js自动加上去,代码如下:
现在我们需要把dist目录下的文件放到 nginx下的html文件夹下。因此我们需要移动目录了。
我本地的nginx的html目录路径是如下:/usr/local/Cellar/nginx/1.15.12/html 如下所示:
1. 我们先需要在该html目录下,新建一个文件夹,来保存所有的资源文件,假如我这边叫 vuedemo. 创建文件如下所示:
2. 我们现在把我们的打包的dist目录下的所有文件复制到 /usr/local/Cellar/nginx/1.15.12/html/vuedemo 目录下:先进入我们的项目根目录下,使用命令:cp -Rf dist/* /usr/local/Cellar/nginx/1.15.12/html/vuedemo 如下所示:
然后我们再查看下 /usr/local/Cellar/nginx/1.15.12/html/vuedemo 下的文件,看是否复制过来了没,如下所示:
现在文件一切准备好了,现在我们需要在我们的nginx下配置即可:
3. 使用 sudo open /usr/local/etc/nginx/nginx.conf -a 'sublime text' 使用编辑器sublime打开)。
然后在nginx.conf 配置信息如下:
worker_processes 1;
events {worker_connections 1024;
}http {include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;server {listen 8022;server_name xxx.abc.com;root html/vuedemo;index index.html;location ~ ^/favicon\.ico$ {root html/vuedemo;}location / {index index.html index.htm;try_files $uri $uri/ @fallback;add_header 'Access-Control-Allow-Origin' '*';add_header 'Access-Control-Allow-Credentials' 'true';add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}location @fallback {rewrite ^.*$ /index.html break;}}include servers/*;
}
注意:
1. 我们的vuedemo的路径是在nginx下的,如:/usr/local/Cellar/nginx/1.15.12/html/vuedemo 这个下的,vuedemo文件夹下是存放的是我们使用webpack打包所有的dist目录下的资源文件。如下所示:
因此我们如上server中的root(根目录) 是从 html/vuedemo 文件开始的。index index.html 这样的,默认主页面是 index.html. try_files的基本语法我这边不再描述,有兴趣的话看我之前这篇文章
2. 是否注意到,我listen(监听的)是 8022,本来应该是80的,这样访问页面的时候就不用添加端口号,但是也不知道为什么我本地安装的nginx默认的端口号不是80,而是8080. 所以如果我监听80端口号的话,会有问题。因此这边先不管。
如上配置完成后,我们就可以再页面上访问 http://xxx.abc.com:8022/home 就可以访问到页面了,不管我页面刷新多少次,都是这个页面;如下所示:
点击任何一个路由的话,比如点击java路由,再刷新的话也是可以的,如下所示:
http://www.hbzjk.net/saaaq2o3Bjp0cDLaVU.html
http://www.hbzjk.net/sbbsBE5K2WAjBikFPh.html
http://www.hbzjk.net/sjklZjmYP0hXfTqYYS.html
http://www.hbzjk.net/shot2GCfX0p36MWSZi.html
http://www.hbzjk.net/saerMlQmCOI9aRLHG2.html
http://www.hbzjk.net/sdfJTk7jq5g9NQWZC.html
http://www.hbzjk.net/sjkl8U1P7F9RHlAYUc.html
http://www.hbzjk.net/swddSggNQKWMiTa1KY.html
http://www.hbzjk.net/scvxnkrYT6Nc61EBS5.html
http://www.hbzjk.net/syhjeEedqpUBDmQoAo.html
http://www.hbzjk.net/sfgjh2IC0cRdTCIqCkY.html
http://www.hbzjk.net/sfhtcKUeXn0dFIaEr4.html
http://www.hbzjk.net/saxdpJVr9F835NHY4C.html
http://www.hbzjk.net/sloq8AfBedoFMpNRcm.html
http://www.hbzjk.net/slwgnoHeZ4T3JOIoN7.html
http://www.hbzjk.net/sqgh5jRnNKmFR4V8Ve.html
http://www.hbzjk.net/srfhq0L6YDXnFEHNnJ.html
http://www.hbzjk.net/sfjq6rOK53SqLqckec.html
http://www.hbzjk.net/snqhBFeOiDaUjWkBp7.html
http://www.hbzjk.net/sxrhha24DeeffFUBQ2.html
http://www.hbzjk.net/smwy0jdZYHPVdOKhfR.html
http://www.hbzjk.net/skkw4d8c2P867GoCL3.html
http://www.hbzjk.net/svtymn603m4LIG5PBd.html
http://www.hbzjk.net/szuj4dWiY9rZS4kFg0.html
http://www.hbzjk.net/shhk80Ya51fEW0lAEC.html
http://www.hbzjk.net/shjfggUITo47peKbUDA.html
http://www.hbzjk.net/shjfg95U7U3SHTh6CD3.html
http://www.hbzjk.net/skkw0RcqaXRFgNlTSB.html
http://www.hbzjk.net/sbbsIa0eZ9bj8JICNY.html
http://www.hbzjk.net/sfggqdHnqUCKb9Kkb24.html
http://www.hbzjk.net/szujm9D8qkNQYO1NoM.html
http://www.hbzjk.net/szujpUnIcM7I0Lgidg.html
http://www.hbzjk.net/szujaKUa7njAMCgUdg.html
http://www.hbzjk.net/szujTL5n9MiQ8HoHmD.html
http://www.hbzjk.net/szujqkqMeaIlrrB1HM.html
http://www.hbzjk.net/szujiC06jDgIH0qMeB.html
http://www.hbzjk.net/szuj3aV5pTNq4oWBoe.html
http://www.hbzjk.net/szujHPZZIfH2DrD5Ml.html
因此nginx部署就完成了。
在nginx上部署vue项目(history模式)--demo实列;相关推荐
- 在nginx上部署vue项目(history模式);
在nginx上部署vue项目(history模式): vue-router 默认是hash模式,使用url的hash来模拟一个完整的url,当url改变的时候,页面不会重新加载.但是如果我们不想has ...
- history模式 nginx配置_nginx反向代理部署vue项目(history模式)的方法
前言: 根据标题我们要区分出两个信息 1. history 模式部署 ( vue的路由模式如果使用history,刷新会报404错误.) 2. Nginx 做反向代理 问题1思考: vue-route ...
- nginx下部署vue项目
nginx下部署vue项目 今天要用到服务器nginx,还需要把自己的vue的项目部署到服务器上去所以就写一下记录下来. 首先要去nginx官网下下载nginx: 下载地址:https://ngin ...
- nginx下部署vue项目概览 - (资源篇)
相关博客: nginx下部署vue项目概览 这里使用的是百度云的服务器,CentOS7系统的 linux服务器用centos还是ubuntu系统_Linux nginx服务器搭建以及配置 nginx部 ...
- Vue项目History模式404问题解决
本文主要解决Vue项目使用History模式发布到服务器Nginx上刷新页面404问题.(由于每个项目的情况都不尽相同,本方案已经完美解决本在所使用项目,具体情况可能还需要修改.) 1.项目背景分析 ...
- 小试牛刀:百度LS轻量服务器+Centos7.9+PuTTY+Nginx,部署Vue项目
简单将vue项目部署到云服务器上 百度LS轻量服务器 PuTTy 远程登录 防火墙配置与开放端口 Ngnix安装配置 检查是否已经安装了nginx 安装nginx必要的依赖库 gcc pcre zli ...
- Ubuntu服务器上部署Vue项目
一.创建Vue项目 用管理员权限打开命令行窗口,用vue-cli 来新建一个项目,执行->vue create [项目名称],我这里项目名称为testapp,回车命令行之后会有这么一个弹窗让你选 ...
- 发布react项目到linux服务器,nginx上部署react项目的实例方法
测试项目:react-demo 克隆你的react-demo项目到服务器上(默认使用Github管理我们的项目) 如果需要,请安装项目环境,比如:node.js,yarn等 进入项目目录,执行npm ...
- 在Nginx上部署ThinkPHP,解决Pathinfo问题
在Nginx上部署ThinkPHP,解决Pathinfo问题 其实,要解决nginx不支持pathinfo的问题,有两个解决思路,一是不使用pathinfo模式,二是修改nginx的配置文件,使它支持 ...
最新文章
- UA SIE545 优化理论基础0 优化建模3 线性回归的参数估计问题
- vSphere利用NTP为主机同步时间
- String判断为空的方式
- python高阶函数求导_Python---高阶函数
- U3D5.3.5f Monodevelop 仅支持到.NET 3.5
- 【收藏】误删idea 的.iml文件后的处理方法
- [BUUCTF-pwn]——picoctf_2018_shellcode
- solr入门之參考淘宝搜索提示功能优化拼音加汉字搜索功能
- elasticsearch-jdbc同步myslq数据到elasticsearch
- 16个推荐系统开放公共数据集整理分享
- P4027-[NOI2007]货币兑换【斜率优化dp,CDQ分治】
- 用于Play框架分布式应用程序的Init.d Shell脚本
- maya中英文对比_maya中英文对照表
- css 幻灯片_如何使用HTML,CSS和JavaScript创建幻灯片
- Try Redis : Redis 入门教程
- Codeforces Round #395 C
- mysql事务隔离级别及传播机制
- arcengine动态显示所需字段值
- jmeter处理带表单的接口请求
- 【转】高性能web开发