您的位置:

Vue.js + History Mode + Nginx的应用实践

一、 Vue.js

Vue.js是一款轻量级MVVM框架,是目前国内外最受欢迎的前端框架之一。Vue.js具有简单易学、易使用、灵活、高效等特点。

Vue.js官方提供了vue-cli脚手架工具能够快速搭建起前端项目的基础架构。其中最主要的特点就是:高效、快捷、可扩展、高度集成化等。

二、History Mode

Vue.js提供了一个后端路由模式——Hash模式来路由跳转,它使用锚点( # )作为路由切换的标记。但是在实际应用开发当中,需要实现美观、友好的路由结构,因此就需要使用前端路由模式——History模式。

History模式实际上是通过HTML5的history.pushState()和history.replaceState()方法来完成URL地址的变化,即整个URL地址呈现为一种真实的URL地址模式。在使用History模式的时候,需要使用后端配置进行支持,我们可以使用Nginx作为我们的HTTP服务器进行部署。

三、Nginx

Nginx是一款高性能的HTTP服务,同时也可以作为反向代理服务器、邮件服务器等。特殊是在高并发情况下,Nginx是非常适合作为负载均衡服务器。

我们可以通过Nginx来解决使用History模式下的路由问题。


location / {
    try_files $uri $uri/ /index.html;
}

在Nginx配置文件中加入以上代码,即可实现在History模式下路由的正确展示。

四、应用实践

接下来,我们来实际操作一下Vue.js + History Mode + Nginx的应用实践。

我们可以通过vue-cli脚手架来快速进行项目的创建和配置。


# 全局安装 vue-cli
npm install -g vue-cli

# 初始化一个基于 webpack 模板的新项目
vue init webpack my-project

# 安装项目依赖,走你
cd my-project
npm install
npm run dev

其中需要在Vue.js的router.js文件中进行配置,示例代码如下:


import Vue from 'vue';
import Router from 'vue-router';

Vue.use(Router);

// 定义路由
const routes = [
  {
    path: '/',
    name: 'Home',
    component: () => import('@/views/Home'),
  },
  {
    path: '/about',
    name: 'About',
    component: () => import('@/views/About'),
  },
];

const router = new Router({
  mode: 'history',
  // 注意这里的 base 可以配置为你项目的子路由如 /blog/
  base: process.env.BASE_URL,
  routes,
});

export default router;

以上代码即定义了两个路由,一个是Home,一个是About。然后我们通过实例化Router,然后exports出去以供使用。

其次,我们需要在Nginx配置文件中配置,示例代码如下:


upstream vueDemo {
    server 127.0.0.1:8080;
}

server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    location / {
        proxy_pass http://vueDemo;
        index  index.html index.htm;
        # 根据Vue.js的History Mode配置来发现文件
        try_files $uri $uri/ /index.html;
    }
}

以上代码即是Nginx进行配置的主要部分。主要是通过upstream来配置反向代理的服务,同时location /中,通过try_files来实现使用Vue.js的History Mode配置来发现文件,实现路由的正常跳转。

最后,我们在控制台中运行以下代码:


# 安装Nginx
sudo apt-get update
sudo apt-get install nginx

# 启动Nginx
sudo service nginx start

以上代码即安装了Nginx,并将其启动起来。

五、总结

通过以上Vue.js + History Mode + Nginx的应用实践,我们了解到了Vue.js、History模式的基本实现和Nginx反向代理的配置方法。在实际开发中,我们可以根据需要进行二次开发,以满足我们的业务需求。