致命的问题,响应速度慢
这打开也太慢了,六七秒才下完资源,要是面试官没耐心打开,我唯一的优势就凉了,所以要解决这个问题,因为这个就一个单页面应用,而且页面也不大,用不到什么懒加载这种(主要是太菜了,不太会,只能选自己目前能解决的方法来解决,但是我感觉这个思路和懒加载类似,也是在用的时候才去请求,而不是第一次打开就全部下载下来),我看这个js这么大,所以觉得可以用二级子域名,来分割各个项目,
哎结果还是分割了,有点违背我想整合成单页面应用的初衷。
试验了一下,分割了后台管理的另外两个项目,暂时用一个mixer的域名,可以发现响应速度明显变快
7s变到了2s,所以把几个项目全部分离,就可以光速打开了,毕竟里面都不大,而且只有一个是有后端的,其他的都是静态页面
现在是单页面,ui的官网,降到1.25s
发现我ui根本没用antd的css,我是用的我自己的ui啊,antd是其他项目用到的,然后再去掉css,直接又缩短一半
express框架下的静态文件,路由嵌套后一刷新就404
经过一晚上的排除和总结,分为3个问题,如下
- 登录时的logo图片,请求地址为 http://localhost:5000/xxxx,但是对比成功的前几个站点,请求地址应该是 域名/xxxx,
- 富文本上传图片的时候,也出现了上面的问题
- 嵌套路由,在不刷新的情况下,点击是正常工作的,但是一刷新就404,原因是浏览器顺着url去找真实的物理路径,但这是单页面应用,仅仅只是注册的路由而已,所以找不到就报错了
解决办法:
- 第一个,在前端把BASEURL改为 域名,而不是 localhost5000,其实也是因为之前配置的package.json中的homepage : ‘.’ ,这个原因,因为之前想部署静态,结果静态文件找不到路径,要把相对路径改成绝对路径,之后就没改回来;
- 第二个,需要在后端把5000改成域名
- 第三个需要在后端,修改监听,把监听都换成index.html下,然后就会自动匹配路由了
res.send({
status: 0,
data: {
name: file.filename,
// localhost:5000或许不行,在本地的时候可以,但是在线上可能不行
// url: 'http://localhost:5000/upload/' + file.filename
url: 'http://manage.voiceu.top/upload/' + file.filename
}
})
const path = require('path')
//配置任何请求都转到index.html,而index.html会根据React-Router规则去匹配任何一个route
app.get('*', function (request, response){
response.sendFile(path.resolve(__dirname, 'public', 'index.html'))
})
搞定!