赞
踩
打开 dist index.html 文件发现白屏。打开调试后发现什么也没有,也没有报错。
根据以往的经验如果是文件路径报错,一般在根目录下新建 vue.config.js
配置publicPath就行了,或者直接在vue-ui上的配置文件加个点就好。
publicPath:"./"
各种百度,发现都是叫我配publicPath,但我已经配好了。
百思不得其解,自己慢慢摸索终于发现了问题:
不知道怎么自己的mode变成了history,默认是hash模式
var router = new Router({
mode: 'history'
})
类型: string
默认值: “hash” (浏览器环境) | “abstract” (Node.js 环境)
可选值: “hash” | “history” | “abstract”
配置路由模式:
hash: 使用 URL hash 值来作路由。支持所有浏览器,包括不支持 HTML5 History Api 的浏览器。
history: 依赖 HTML5 History API 和服务器配置。
abstract: 支持所有 JavaScript 运行环境,如 Node.js 服务器端。如果发现没有浏览器的 API,路由会自动强制进入这个模式。
在浏览器中符合“#”,#以及#后面的字符称为hash,用window.location.hash读取
特点:hash虽然在URL中,但不被包括在HTTP请求中;用来直到浏览器动作,对服务端安全无用,hash不会重新加载页面。
Hash模式下,仅hash符号之前的内容被包含在请求中,如http://www.xxx.com,因此对于后端来说,即使没有做路由全覆盖,也不会返回404错误。
Historty采用HTML5新特性,且提供两个新的方法pushState(),replaceState()可以对浏览器历史记录栈进行修改,以及popState事件的监听到状态的变更。
History模式下,前端的URL必须和实际向后端发起请求的URL一致,如http://www.xxx.com/items/id。后端如果缺少对/items/id的路由处理,将会返回404错误。Vue-router官网里如此描述:“不过这种模式要完好,还需要后台配置支持…所以,你要在服务端添加一个覆盖所有情况的候选资源。如果url匹配不到任何静态资源,则应该返回同一个index.html页面,这个页面就是你app依赖的页面。”
如果使用history模式上线,必须要服务端在服务器上有对应的模式才能使用history(看上面链接),如果服务器上没有配置,可以先使用默认的hash;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。