请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于发起 ajax 请求的时机

课程中您有提到,“ajax 请求放在 created 生命周期内和放在 mounted 内相比,没有特别好的效果,并且逻辑混乱,除非有特殊需求可以选择放在 created 里”。

我的理解:
1、代码逻辑还好吧
2、取决于 ajax 耗时
1)ajax 请求快,和——获取到数据之后触发 setter 直到 re-render 发生、这个过程的计算耗时相比很小,那么放哪都可以。
2)ajax 请求慢,放在 created 里,可以更早地获取到数据触发 setter,视图的重新渲染也会提前,但因为 created 发生在真实 dom 挂载之前,可能导致首屏等待时长变长(继续扩展一下,还可以讨论下放在 beforeMount 里面的情况)
总结一下:
1、如果要尽快看到视图,那就放到 mounted 里;
2、如果要尽快看到有价值的视图,那就放到 created 里(此时,放到 beforeMount 里效果要差些;这种情况就是您说的特殊需求吗?),与此同时要牺牲到部分首屏时间;

以上,请老师点评哈。
还有, Vue 的策略之 re-render 发生的时机,能否再多讲一些呢…

正在回答

3回答

总结的挺好。

补充一下。页面初始化时,created 到 mounted 的耗时非常短。所以 ajax 放在 created 里所能带来的优化效果,并不明显。

0 回复 有任何疑惑可以回复我~
  • 提问者 Hemingway_AT #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2020-02-15 16:15:45
林昱凌 2021-01-07 10:07:57

为什么放在created里可能会导致首屏时间边长呢,请求不是异步的吗

0 回复 有任何疑惑可以回复我~
  • 双越 #1
    题干解释了这个问题。不过这个延长只是理论上的,实际感受不到的。
    回复 有任何疑惑可以回复我~ 2021-01-07 19:05:51
慕粉202224771 2020-11-17 10:47:38

那是不是放在created里面视图只渲染了一次,而放在mounted里面视图需要再次渲染啊?

0 回复 有任何疑惑可以回复我~
  • 双越 #1
    不是渲染一次的。js 执行要不 ajax 快多了,怎么都得渲染两次。
    回复 有任何疑惑可以回复我~ 2020-11-17 11:17:59
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信