服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服务器之家 - 编程语言 - JavaScript - vue.js - 部署过Vue项目吗?遇到404如何解决?

部署过Vue项目吗?遇到404如何解决?

2024-01-16 13:06海燕技术栈 vue.js

选择上述的哪种方式取决于具体情况和需求。在处理刷新404问题时,理解前后端路由的关系以及合适的路由配置非常重要。

Vue项目部署过程部署

Vue.js项目有多种方式,其中常见的方式包括将静态文件托管到一个Web服务器,使用CDN(Content Delivery Network)进行分发,或者将Vue.js应用嵌入到后端框架中。部署一个Vue.js应用通常包括以下步骤:

「生成生产构建」:

在项目根目录运行以下命令生成生产构建:

npm run build

这将在项目的dist目录中生成用于生产环境的静态文件。

「选择部署方式」:

  • 将生成的dist目录中的静态文件部署到一个Web服务器上,或者使用CDN分发。

  • 或者将Vue.js应用嵌入到后端框架中,通过后端服务器来处理请求。

 

 

「服务器配置」:

 

  • 配置服务器以正确处理Vue Router的路由。这通常涉及将所有非静态资源的请求指向index.html,以确保前端路由能够正确处理。

 

 

「选择Hash模式(可选)」:

 

  • 如果你遇到刷新页面404的问题,可以选择使用Hash模式。在Vue Router中配置Hash模式:

     

    import { createRouter, createWebHashHistory } from 'vue-router';
    
    
    const router = createRouter({
      history: createWebHashHistory(),
      routes,
    });
    
    
    export default router;

     

     

下面是一个更详细的步骤:

1. 「生成生产构建」:

在项目根目录运行以下命令生成生产构建:

npm run build

这将在项目的dist目录中生成用于生产环境的静态文件。

2. 「选择部署方式」:

  • 「使用Web服务器」:

将dist目录中的静态文件上传到一个Web服务器上,如Nginx、Apache等。

配置Web服务器以正确处理静态文件,确保所有请求都指向index.html,以便Vue Router正确处理前端路由。

  • 「使用CDN分发」:
  • 将dist目录中的静态文件上传到一个CDN服务上,如Netlify、Vercel等。

  •  

    「嵌入到后端框架」:

     

  • 将Vue.js应用嵌入到后端框架中,如Node.js的Express、Java的Spring Boot等。

3. 「服务器配置」:

  • 「Nginx配置示例」:

假设Vue.js应用部署在Nginx服务器上,以下是一个简单的Nginx配置示例:

server {
  listen 80;
  server_name your-domain.com;


  location / {
    root /path/to/your/dist;
    try_files $uri $uri/ /index.html;
  }


  # Other server configurations...
}

这个配置确保所有的非静态资源请求都会被重定向到index.html,以确保Vue Router能够处理这些路由。

4. 「选择Hash模式(可选)」:

如果在刷新页面时遇到404问题,可以选择使用Hash模式。在Vue Router中配置Hash模式:

import { createRouter, createWebHashHistory } from 'vue-router';


const router = createRouter({
  history: createWebHashHistory(),
  routes,
});


export default router;

使用Hash模式时,在部署时刷新页面不会导致404问题,因为URL中的#后面的内容不会被发送到服务器,仍然由Vue Router处理。

「处理刷新404问题」:

在SPA中,当用户刷新页面时,浏览器会向服务器请求当前URL对应的资源,这可能导致404错误。这是因为服务器端可能没有配置相应的路由,因为在SPA中,所有的路由都应该由前端的Vue Router来处理。

解决方法:

  1. 「后端路由配置」:确保你的后端服务器能够处理所有可能的前端路由,将它们指向你的SPA的入口HTML文件。
  • 对于Node.js的Express服务器,可以使用如下代码:
const express = require('express');
const path = require('path');
const app = express();


// Serve static files
app.use(express.static(path.join(__dirname, 'dist')));


// Handle other routes by serving the index.html
app.get('*', (req, res) => {
  res.sendFile(path.join(__dirname, 'dist', 'index.html'));
});


// Start the server
const port = process.env.PORT || 3000;
app.listen(port, () => {
  console.log(`Server is running on port ${port}`);
});
  1. 「使用Hash模式」:Vue Router默认使用的是history模式,这样在URL中就不会包含#。但是,使用Hash模式可以避免刷新404问题,因为在Hash模式下,#后面的部分不会被发送到服务器。在Vue Router中配置Hash模式:
const router = createRouter({
  history: createWebHashHistory(), // 使用Hash模式
  routes,
});

这样,在部署时,即使刷新页面,也不会出现404问题。URL中的#后面的内容仍然会被Vue Router处理。

选择上述的哪种方式取决于具体情况和需求。在处理刷新404问题时,理解前后端路由的关系以及合适的路由配置非常重要。

这里只是简单介绍一下流程,具体的部署还需要自己实践去理解其中的步骤。

原文地址:https://mp.weixin.qq.com/s/0e_ccBFKnQRhHU4vJ7k6yQ

延伸 · 阅读

精彩推荐
  • vue.jsvue+flask实现视频合成功能(拖拽上传)

    vue+flask实现视频合成功能(拖拽上传)

    这篇文章主要介绍了vue+flask实现视频合成功能(拖拽上传),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的...

    代码哈士奇8382022-02-10
  • vue.js深入了解Vue动态组件和异步组件

    深入了解Vue动态组件和异步组件

    这篇文章主要介绍了深入了解Vue动态组件和异步组件的相关资料,帮助大家更好的理解和学习vue组件的相关知识,感兴趣的朋友可以了解下...

    gzhjj7142022-01-07
  • vue.jsvue实现防抖的实例代码

    vue实现防抖的实例代码

    这篇文章主要给大家介绍了关于vue实现防抖的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友...

    唐生洗发用飘柔11262021-12-30
  • vue.jsVue+penlayers实现多边形绘制及展示

    Vue+penlayers实现多边形绘制及展示

    这篇文章主要为大家详细介绍了Vue+penlayers实现多边形绘制及展示,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    小小并不小7092021-12-18
  • vue.jsvue+elementui通用弹窗的实现(新增+编辑)

    vue+elementui通用弹窗的实现(新增+编辑)

    这篇文章主要介绍了vue+elementui通用弹窗的实现(新增+编辑),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋...

    yingmhd8832021-12-27
  • vue.jsvue常用高阶函数及综合实例

    vue常用高阶函数及综合实例

    这篇文章主要介绍了vue常用高阶函数及综合案例,文章内容讲解的很清晰,有对于这方面感兴趣的同学可以研究下...

    盛开的太阳10512022-01-22
  • vue.jsVue实现小购物车功能

    Vue实现小购物车功能

    这篇文章主要为大家详细介绍了Vue实现小购物车功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    你别皱眉9502021-12-16
  • vue.js详解vite+ts快速搭建vue3项目以及介绍相关特性

    详解vite+ts快速搭建vue3项目以及介绍相关特性

    这篇文章主要介绍了vite+ts快速搭建vue3项目以及介绍相关特性,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要...

    筱月5422022-01-22