yangkaiyangyi / prombles

0 stars 0 forks source link

关于vue中遇到的一些问题 #22

Open yangkaiyangyi opened 5 years ago

yangkaiyangyi commented 5 years ago

1.mounted钩子函数中请求数据数据导致页面闪屏问题 其实式加载时机问题,放在created会比mounted触发早一点,在页面挂载完之前数据的请求完成。 2.用forEach遍历List,ie报错“list为对象,不支持forEach属性” 因为ie认为List是一个对象,不支持forEach方法遍历,解决方法很简单

  // es6写法
    let nodeList = [...list]
   // es5写法
    let lsit = Array.prototype.call(’list‘))

  //伪数组
var btns = document.getElementsByTagName('button');
        console.log(btns)
        // 获取按钮的内容组成的数组
        // btns.map(item=>item.innerText);//
        // * 改变map中的this指向
        // * 执行map方法
        let res = Array.prototype.map.call(btns,function(ele,idx,a){

            return ele.innerText;
        });
        console.log(res);

3.关于页面切换的时候,如果有定时器,需要在钩子周期状态---》(beforedestroy/destroy/beforRouterleave)把定时器给去掉,免于继续运行,降低性能。

yangkaiyangyi commented 5 years ago

白屏解决与优化方案

当前很多无线页面都使用前端模板进行数据渲染,那么在糟糕的网速情况下,一进去页面,看到的不是白屏就是 loading,这成为白屏问题。

此问题发生的原因基本可以归结为网速跟静态资源

1、css文件加载需要一些时间,在加载的过程中页面是空白的。 解决:可以考虑将css代码前置和内联。 2、首屏无实际的数据内容,等待异步加载数据再渲染页面导致白屏。 解决:在首屏直接同步渲染html,后续的滚屏等再采用异步请求数据和渲染html。 3、首屏内联js的执行会阻塞页面的渲染。 解决:尽量不在首屏html代码中放置内联脚本。(来自翔歌)

解决方案

根本原因是客户端渲染的无力,因此最简单的方法是在服务器端,使用模板引擎渲染所有页面。同时

1减少文件加载体积,如html压缩,js压缩 2加快js执行速度 比如常见的无限滚动的页面,可以使用js先渲染一个屏幕范围内的东西 3提供一些友好的交互,比如提供一些假的滚动条 4使用本地存储处理静态文件。