vue、微信的那些坑
2018-07-11 本文已影响677人
凉丶白开
vue路由去掉#号
vue项目启动后url中会有个难看的#号,如果想要去掉也很简单,在router.js中把路由模式由默认的hash模式改为history模式即可;
const router=new Router({
mode:'history'
})
vue项目打包完后,发现去掉#号访问页面会出现空白页404,加上#号就能正常访问,之前设置的失效。那是因为history模式需要依赖后端支持。
具体可以参考 HTML5 History 模式之后端配置
举个基于 Node.js 的 Express的例子
首先在vue项目中通过npm安装中间件connect-history-api-fallback
npm install --save connect-history-api-fallback
再在根目录下新建个文件index.js
'use strict'
const express = require('express');
const history = require('connect-history-api-fallback');
const app = express();
const staticFileMiddleware = express.static('dist');
app.use(staticFileMiddleware);
app.use(history({
disableDotRule: true,
verbose: true
}));
app.use(staticFileMiddleware);
const port = 8080;
app.listen(port, () => {
console.log(`listening on port ${8080}!`);
});
staticFileMiddleware 是指打包之后的静态文件
之后在package中设置启动命令
"scripts": {
"start": "node index.js"
},
再执行
npm start
在浏览器中输入localhost:8080/index,就能正常访问了。
vue 对静态文件进行版本控制
由于微信内置的浏览器缓存坑非常严重,有时更改了一些js、css文件,微信中却没有实时更新。那么就很需要对这些文件的版本号进行控制。在vue项目中 build/webpack.prod.conf.js中更改:
output: {
path: config.build.assetsRoot,
filename: utils.assetsPath('js/[name].[chunkhash].'+(new Date()).getTime()+'.js'),
chunkFilename: utils.assetsPath('js/[id].[chunkhash].'+(new Date()).getTime()+'.js')
}
安卓微信授权后重定向页面空白
在上线测试过程中发现,在微信授权后重定向到指定页面后安卓手机页面空白,再次刷新就能跳转过来,IOS就很正常。废了老半天都没有找到解决办法,各种百度,google,后来发现原来是微信浏览器缓存机制问题。由于我vue中配置的是hash模式,url中有个#号,所以在重定向url中加个版本号就可以了。
php版:
//在url中加上时间戳,防止浏览器使用缓存是一种很常见的做法。
header("Location:http://my.app.com/?".time()."#/login"),