- {{ state.title }}
+
+
+
diff --git a/src/utils/index.js b/src/utils/index.js
index 69196ffe8f728239155144cd6a956bcf6243d39c..87948abf7aed6b5032b97e10abf6cafe39ecf846 100644
--- a/src/utils/index.js
+++ b/src/utils/index.js
@@ -1,9 +1,18 @@
class ListenDomChange {
+ // 监听 dom 节点
+ dom = null;
+ // observer
+ observer = null;
+ // performance
+ performanceConfig = {};
+
constructor(dom, callbackDomChange) {
- // 监听 dom 节点
this.dom = dom;
- // 回调函数
this.callbackDomChange = callbackDomChange;
+ // 初始化为{}
+ this.performanceConfig={}
+ // 计算performanceConfig
+ this.calcPerformance()
}
// 监听 dom变化
mutationListen() {
@@ -23,19 +32,28 @@ class ListenDomChange {
console.log("The " + mutation.attributeName + " attribute was modified.");
}
}
+ console.log('change', change)
};
// 创建一个观察器实例并传入回调函数
- const observer = new MutationObserver(callback);
+ this.observer = new MutationObserver(callback);
// 以上述配置开始观察目标节点
- observer.observe(targetNode, config);
+ this.observer.observer.observe(targetNode, config);
// 之后,可停止观察
- observer.disconnect();
+ this.observer.observer.disconnect();
+ }
+
+ getPerformance(){
+ return performance
}
- getPerformance() {
+ setPerformance(key,value){
+ this.calcPerformance[key]=value
+ }
+
+ calcPerformance() {
// Time to when activation occurred
let activationStart =
performance.getEntriesByType("navigation")[0].activationStart;
@@ -52,6 +70,20 @@ class ListenDomChange {
console.log(
"time to first-contentful-paint: " + (firstContentfulPaint - activationStart),
);
+ setPerformance('time to first paint',firstPaint - activationStart)
+ setPerformance('time to first-contentful-paint',firstContentfulPaint - activationStart)
+
+ const entries = performance.getEntriesByType("navigation");
+ entries.forEach((entry) => {
+ console.log(`${entry.name}: domComplete time: ${entry.domComplete}ms`);
+
+ const domContentLoadedTime =
+ entry.domContentLoadedEventEnd - entry.domContentLoadedEventStart;
+ console.log(
+ `${entry.name}: DOMContentLoaded processing time: ${domContentLoadedTime}ms`,
+ );
+ setPerformance(entry.name,domContentLoadedTime)
+ });
}
}