vuerouter配置为history方式,vue router history模式

  vuerouter配置为history方式,vue router history模式

  vue路由有两种模式:哈希模式和历史模式。本文主要介绍vue-router历史模式的服务器端配置的相关信息,有需要的朋友可以参考一下。

  

history路由

  历史模式是指使用HTML5的historyAPI实现客户端路由的模式。其典型表现就是在哈希模式下去掉url路径中的#号。使用Vue-Router时,很容易打开历史模式。在实例化路由时,您只需要传入mode:“history”配置项。但是,在没有服务器支持的情况下,基于historyAPI的路由无法从url地址栏直接访问指定页面。这很好理解,因为在url地址栏输入然后按enter就相当于发送了一个GET请求。那么不带#的路由路径就和通用API接口一样。由于服务器没有定义这样的接口,所以在直接访问期间出现404页面是正常的。

  官方示例

  有许多官方方法来处理这种情况。以node.js版本的处理方案为例:

  const http=require(http )

  const fs=require(fs )

  const httpPort=80

  http.createServer((req,res)={

  fs.readFile(index.htm , utf-8 ,(err,content)={

  如果(错误){

  console.log(我们无法打开 index.htm 文件。)

  }

  res.writeHead(200,{

  content-Type : text/html;charset=utf-8

  })

  资源结束(内容)

  })

  }).listen(httpPort,()={

  console.log(服务器侦听:http://localhost:%s ,httpPort)

  })

  不难看出,它的处理思路是所有请求都被强制重定向到首页,相当于服务器屏蔽了访问资源的缺失,把路由工作留给客户端处理,这样启用了历史模式的前端路由在直接定位到子页面时就不会报错。

  

vue-router history模式配置

  vue-router的历史模式需要在路由配置中设置模式为历史,也需要在服务器端配置。

  与哈希模式相比,在历史模式下,页面的url中会出现较少的#等符号:

  哈希:www.example.com/#/login

  历史:www.example.com/login

  在单页应用中,浏览器会以历史模式向服务器请求这个页面,但是这个页面在服务器端并不存在,所以返回404。所以这时候就需要配置服务器:除了静态资源,还需要返回单页应用的index.html。

  服务器配置——nodejs

  需要在nodejs服务器中引入connect-history-api-fallback模块来处理历史模式,在使用处理静态资源的中间件之前使用该模块:

  const path=require(path )

  //导入处理历史模式的模块

  const history=require(" connect-history-API-fallback ")

  const express=require(express )

  const app=express()

  //注册处理历史模式的中间件。

  app.use(history())

  //处理静态资源的中间件

  app . use(express . static(path . join(_ _ dirname,。/web )))

  app.listen(3000,()={

  console.log(“服务在端口3000启动”)

  })

  服务器配置——nginx

  首先将打包的文件放在html文件夹中,然后打开conf文件夹中的nginx.conf文件,并修改以下配置:

  http {

  # .其他配置

  服务器{

  # .其他配置

  位置/{

  根html

  索引index.html index.htm;

  try _ files $ uri $ uri//index . html;

  }

  }

  }

  

总结

  关于vue-router历史模式的服务器端配置的文章到此结束。有关vue路由器历史模式配置的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望你以后能支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: