关于发起 ajax 请求的时机

来源:5-3 vue真题演练2-组件data为何是函数

Hemingway_AT

2020-02-15

课程中您有提到,“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回答

双越

2020-02-15

总结的挺好。

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

0
1
Hemingway_AT
非常感谢!
2020-02-15
共1条回复

林昱凌

2021-01-07

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

0
1
双越
题干解释了这个问题。不过这个延长只是理论上的,实际感受不到的。
2021-01-07
共1条回复

慕粉202224771

2020-11-17

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

0
1
双越
不是渲染一次的。js 执行要不 ajax 快多了,怎么都得渲染两次。
2020-11-17
共1条回复

前端框架及项目面试 聚焦Vue3/React/Webpack

面向1-3年前端的框架及项目面试“刚需内容”

4695 学习 · 1667 问题

查看课程