vue-router默认的路由模式是hash,我们要去掉url中的#需要将路由模式切换为history

const router = new VueRouter({mode: 'history',...
})

  这样子,url中的#就可以去掉了,在开发环境下不会出问题,部署上线后点击正常,但是...你一旦手动点击浏览器的刷新按钮,页面显示nginx的404页面。

  怎么解决呢?在vue-router官网有说明:这种模式还需要后台配置支持。因为我们的应用是个单页客户端应用,如果后台没有正确的配置,当用户在浏览器直接访问 http://oursite.com/user/id 就会返回 404,这就不好看了。

  所以呢,你要在服务端增加一个覆盖所有情况的候选资源:如果 URL 匹配不到任何静态资源,则应该返回同一个 index.html 页面,这个页面就是你 app 依赖的页面。我们线上的服务器用的是nginx,需要改为下面的配置:

# 项目部署在服务器/test目录下(访问地址:http://www.a.com/test)
location ^~/test {
     alias   D:/project/card-web/code/dist/;try_files  $uri $uri/ @card;access_log  logs/card_web.access.log ;error_log  logs/card_web.error.log ;}location @card {rewrite ^/(test)/(.+)$ /$1/index.html last;} # 项目部署在服务器/下(访问地址:http://www.a.com)
 location / {root   D:/project/card-web/code/dist/;index  index.html index.htm;try_files $uri $uri/ /index.html;}

  这样子,无论你怎么刷新页面都不会报404了。。。贼开心。。。

  然而,点进去一个二级路由发现,页面中的图片全都没有加载成功。。。vue-router官网有这么一句话:要注意,以 / 开头的嵌套路径会被当作根路径。 这让你充分的使用嵌套组件而无须设置嵌套的路径。

  我页面中是这么写的:

<img :src="`./static/image/real-time-monitoring/online-line.png`"alt="" class="line-img line-rotation">

  f12后发现,浏览器的请求路径是:

Request URL: http://localhost:8080/cardapp/card/static/image/real-time-monitoring/online-line.png

  我的路由:

{path: '/cardapp',component: CardApp,name: 'cardapp',children:[{ path: 'card', component: add}]
}

  解决办法:

<img :src="`/static/image/real-time-monitoring/online-line.png`"alt="" class="line-img line-rotation">

  原因:这图片处在嵌套路由下,这个嵌套路由以 / 开头,会被当做根路径,之前写的相对路径会拼接到这个嵌套路由下,所有会出现图片路径会加上当前路由了。

转载于:https://www.cnblogs.com/hanshuai/p/9930063.html

vue-router 去掉#相关推荐

  1. Vue 学习(十、 Vue Router - 路由插件 和 Vue 的插件原理)

    文章目录 一.Vue Router - 路由插件 1. 安装 Vue Router 2. Vue Router 路由的基本使用 3. 设置 router-link 4. 编程式路由 5. 路由嵌套 6 ...

  2. vue router 入门笔记

    vue router 入门笔记 tips: components优先级大于component,即当一个route对象里同时配置了component和components时component视为无效 即 ...

  3. 你可能不清楚的 Vue Router 深度用法(一)

    Vue Router 简单易上手,能实现大部分的需求.但是,如果在项目里需要更细致的控制路由,以实现与其同步的效果,就需要挖掘其文档里没详细提及的内容.第一章为路由元信息用途挖掘. 路由元信息用途 ( ...

  4. vue router html,vue-router.html

    Document Hello App! Go to Foo Go to Bar // 1. 定义(路由)组件. // 可以从其他文件 import 进来 const Foo = { template: ...

  5. Vue.js 从 Vue Router 0.7.x 迁移

    从 Vue Router 0.7.x 迁移 只有 Vue Router 2 是与 Vue 2 相互兼容的,所以如果你更新了 Vue ,你也需要更新 Vue Router .这也是我们在主文档中将迁移路 ...

  6. 你可能不清楚的 Vue Router 深度用法(二)

    此为 Vue Router 深度用法的第二篇,主要讲述动态路由匹配用法.第一篇的链接在此: https://segmentfault.com/a/11... 动态路由匹配是用于把某种模式匹配到的所有路 ...

  7. vue router html后缀,vue-router.html

    Document Hello App! Go to Foo Go to Bar // 1. 定义(路由)组件. // 可以从其他文件 import 进来 const Foo = { template: ...

  8. vue require css html,requirejs vue vue.router简单框架

    index.html 入口页面html> vue `menu`.`name` base.js requirejs 配置文件(function(){    requirejs.config({   ...

  9. Vue Router 4.0 正式发布!焕然一新。

    关注若川视野,回复"pdf" 领取资料,回复"加群",可加群长期交流学习 12月8日,Vue Router 4 正式发布稳定版本. 在经历了 14 个 Alph ...

  10. vue router 参数_Vue.js项目开发技术解析

    Vue.js项目开发技术解析 一.Vue.js实例 在一个Vue.js工程中,用于显示内容最基层的实例称之为根实例.通过该实例可以进行页面或组件的更新和显示.对于项目本身而言,无论是什么样的页面,都要 ...

最新文章

  1. TensorFlow基础11-(小批量梯度下降法和梯度下降法的优化)
  2. IntelliJ IDEA出现:This file is indented with tabs instead of 4 spaces的问题解决
  3. linux cal 命令详解
  4. JavaScript命名空间namespace的实现方法
  5. mac下mysql重置密码及使用用户和密码登陆
  6. rabbitmq 更细致的过滤
  7. CakePHP:链接地址问题(不用mod_rewrite,IIS)
  8. POJ3978 Primes【素数筛选+前缀和】
  9. Vmware Workstation常用操作和常见问题
  10. Postman都脱单了,我决定用他女朋友Postwoman了
  11. java 工作流引擎调研总结
  12. proxy代理服务器的代码实现
  13. mysql describe 分页_mysql之分页方式了解
  14. 基于微信小程序的商城购物系统的设计与实现(论文+源码)_kaic
  15. 为perf4j提供集中式监控项目perf4j-dashboard
  16. RationalDMIS 7.1 量块程序 2020
  17. 新浪云计算平台应用开发
  18. 面试必问---TCP连接
  19. [MSDN]关键字查询语言 (KQL) 语法参考
  20. 微信小程序导入其他字体会不会影响运行_微信小程序是否可以引用特殊字体

热门文章

  1. 台湾证券交易开通运营现代化数据中心
  2. android客户端访问服务端tomcat
  3. 框架SpringMVC笔记系列 二 传值
  4. Android 自定义ProgressDialog
  5. iPad随想:苹果的妙招、谷歌的尴尬和中移动MM的局限
  6. win10系统80端口被System (PID=4)占用的解决
  7. Vue项目中跨域的几种方式
  8. 用tomcat插件 在Eclipse 中配置Tomcat项目
  9. python—函数进阶-迭代器
  10. MySQL性能优化(八)